在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

此篇完毕!!!

原文地址:https://www.cnblogs.com/ForeVerWater/p/4073406.html