Indexing DB2插入查询

Indexing DB2插入查询,indexing,insert,db2,primary-key,where-clause,Indexing,Insert,Db2,Primary Key,Where Clause,有一个表应用程序 从应用程序中选择*,其中应用程序\u number='123456'提供以下信息 ID Application_number DATE location 12 123456 2015/05/01 UK 15 123456 2015/05/02 US 18 123456 2015/04/02 ASIA 58

有一个表应用程序

从应用程序中选择*,其中应用程序\u number='123456'
提供以下信息

ID  Application_number           DATE        location

12  123456                       2015/05/01  UK

15  123456                      2015/05/02  US

18  123456                  2015/04/02  ASIA

58  123456                  2015/04/02  APAC
我想插入ID为54的行

我提出的疑问

INSERT INTO Application ( ID, Application_number) SELECT 54 as ID , application_number FROM Application WHERE application_number='123456'
结果应该是

ID  Application_number      DATE        location

12  123456                  2015/05/01  UK

15  123456                  2015/05/02  US

18  123456                  2015/04/02  ASIA

58  123456                  2015/04/02  APAC

54  123456                  date and location doesnt matter 
给我一个错误

INSERT语句、UPDATE语句或 DELETE语句导致的外键更新无效,因为 “1”标识的主键、唯一约束或唯一索引 限制表“CFTSDB.A”的索引值不重复 钥匙SQLSTATE=23505

请问有人能帮忙吗?提前感谢。

您的插入已完成

INSERT INTO 
    Application (ID, Application_number) 
SELECT 
    54 as ID, 
    application_number 
FROM Application 
WHERE application_number='123456'
如果只执行其中的SELECT部分,它可能会返回如下内容:

ID  | Application_number
----+-------------------
54  | 123456
54  | 123456
54  | 123456
54  | 123456
INSERT INTO Application 
    (ID, Application_number) 
VALUES
    (54, '123456')
这意味着,insert尝试插入4行,所有行的ID均为54。这无法工作,因为您的ID可能是唯一的

如果只想在ID 54处插入一条新记录,应执行以下操作:

ID  | Application_number
----+-------------------
54  | 123456
54  | 123456
54  | 123456
54  | 123456
INSERT INTO Application 
    (ID, Application_number) 
VALUES
    (54, '123456')

您真的需要插入此特定ID吗?为什么?您的示例
中有4行,其中应用程序\u number='123456'
,因此您的
INSERT
语句尝试插入ID等于54的4行。@mustaccio是否有其他方法来达到要求?我怎样才能根据需求修改我的查询?谢谢。我不明白你的要求。