我已经找了几天这个问题的答案,但找不到任何参考这个具体问题的资料。
首先,如果我想使用INSERT INTO SELECT语句将表的行复制过来,回到同一个表中,但用新的id和其中的1个列修改,应该能行吗?
举个例子。
INSERT INTO TABLE_A (column1, column2, column3) SELECT column1, 'value to change', column3 from TABLE_A where column 2 = 'original value';
当我在DB2数据库中尝试这样做时,我得到了以下错误:
INVALID MULTIPLE-ROW INSERT. SQLCODE=-533,SQLSTATE=21501,DRIVER=4.18.60。
如果我运行同样的语句,但我在select语句中放入一个特定的ID来返回,确保只返回1条记录,那么语句就会工作。 但这违背了我想做的事情,即把同一表中的多条记录复制到自己的表中,同时把一个特定的列更新为一个新的值。
谢谢大家!我一直在寻找答案。
解决方案:
我在Db2 11.1.4.0上工作得很好,没有错误。
CREATE TABLE TABLE_A( column1 int , column2 varchar(16), column3 int)
INSERT INTO TABLE_A values (1,'original value',3)
INSERT INTO TABLE_A (column1, column2, column3)
SELECT column1, 'value to change', column3 from TABLE_A where column2 = 'original value'
SELECT * FROM TABLE_A
返回
COLUMN1|COLUMN2 |COLUMN3
-------|---------------|-------
1|original value | 3
1|value to change| 3
也许有什么东西你没有告诉我们……