DB2中的update

如果你也遇到了这个问题:

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);

你可能感兴趣的:(DB2中的update)