如果你也遇到了这个问题:
SQL0407N Assignment of a NULL value to a NOT NULL column "TBSPACEID=2, TABLEID=7, COLNO=43 " is not allowed.
解决方案就是下面这个:
http://ibhgx.blog.sohu.com/58150448.html
DB2中的update
在DB2数据库环境下:
假设有表A,B两张表,有下列UPDATE语句:
UPDATE A
SET A1 = (SELECT B1 FROM B WHERE A.ID = B.ID)
对于上面的语句,表明是要对表A所有行的A1字段进行update:对满足WHERE A.ID = B.ID的行,则进行更新A1=B1;对不满足该条件的行,则对A1更新为A1=null.
若对表A的字段A1,想update的是:满足A.ID = B.ID的行,进行更新A1=B1,不满足该条件的行,则不进行更新,SQL语句为:
UPDATE A
SET A1 = (SELECT B1 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)
其中,上面where语句的作用是限制更新条件:A.ID = B.ID,关于这一点,DB2数据库有点烦人,它不能支持下列形式的update语句:
UPDATE A
SET A1 = B1
FROM A, B WHERE A.ID = B.ID
若能支持这样的语法形式,则再写原来的SQl语句就会简洁易懂多了.只可惜,强大的DB2并不支持这种语法格式.
另外,上面更新的只是一个字段,DB2可以同时更新几个字段:
UPDATE A
SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID);
UPDATE A
SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID);