天天看点

郁闷的DB2的Update问题 DB2 Update错误,SQLSTATE=23502

         今天要跟新DB2的一列数据,跟新语句是update budgetindex a set code=(select code from index_test b where a.id=b.id),执行时一直提示错误sqlcode=23502,郁闷,感觉语句没问题呀。

         后来在网上查了一下,发现sqlcode=23502的含义是“插入或更新值为空,但该列不能包含空值”,但是查询了要跟新的表里的数据没有空值呀。继续郁闷中。

         查看要被跟新的表,发现要被跟新的字段不允许为空,突然想起来上次跟新时将一部分数据跟新成为空值啦。应该是跟新时被跟新的部分没有做完全限制,这样会导致不在要跟新的表里面的数据会被赋值为NULL,但是该字段不允许为空,所以肯定会报错。

         处理方法:对被跟新的部分做完全限制,语句改成:update (select id,code from budgetindex where id in (select id from  index_test)) a set code=(select code from index_test b where a.id=b.id)就没有问题啦。

         DB2的Update比较郁闷,这块只是给自己做个记录,同时也算抛砖引玉,欢迎大家拍砖。

继续阅读