在imformix数据库中遇到的坑
今天,给系统改点数据,要从另一个表抓取数据更新到目标表,
一般插入语句格式如下:
Insert into Table2(field1,field2,...) select value1,value2,... from Table1 where ...
但在imformix却不是这样
竟然语法错误?
好吧,改一下呗
看起来好像也不行,
接着,就度娘了一下,有写人分享的是
后面要再加一对括号,想下面这样
1 update t_exd_changeno_seq set seq = 2 ((select changeno from t_exd_ar_tmp where 3 t_exd_ar_tmp.exdebtcode = t_exd_changeno_seq.changenocode))
但运行还是通不过
错误是Cannot insert a null into column.
检查了一遍,插入的数据没有null值阿~~~
真令人摸不着头脑
接着,我看系统的某个shell时,发现里面有类型的语句,好像要加上
where exists的语句
完整语句如下:
1 update t_exd_changeno_seq set seq = 2 (select changeno from t_exd_ar_tmp where 3 t_exd_ar_tmp.exdebtcode = t_exd_changeno_seq.changenocode) 4 where exists 5 (select * from t_exd_ar_tmp where 6 t_exd_ar_tmp.exdebtcode = t_exd_changeno_seq.changenocode);
这样的语句,就能成功update了,
where exists部分就是搞掂了Cannot insert a null into column.的问题
难道这就是imformix的语法?最后还得从新确认数据是不存在吗?真令人费解阿!!!
所以阿,以前用oracle还是挺幸福的,5555
此篇完毕!!!