我必须在表格中插入数据,但此表格对两列 column_1
和 column_2
有唯一约束。现在,在插入过程中,我收到以下错误:
查找错误 - DB2数据库错误:错误[23505] [IBM] [DB2 / AIX64] SQL0803N由DELETE语句引起的INSERT语句,UPDATE语句或外键更新中的一个或多个值无效,因为主数据库由" 1"标识的密钥,唯一约束或唯一索引;约束表" table_name"来自索引键的重复值。 SQLSTATE = 23505。
如何避免此错误?
答案 0 :(得分:1)
您可以实现" upsert =更新或插入"语义。在DB2中,这可以通过以下方式实现(示例来自here):
MERGE INTO employees AS tab
USING (VALUES
(123456,'smith','bob')
) AS merge (id,last_name,first_name)
ON tab.id = merge.id
WHEN MATCHED THEN
UPDATE SET tab.id = merge.id,
tab.last_name = merge.last_name,
tab.first_name = merge.first_name
WHEN NOT MATCHED THEN
INSERT (id,last_name,first_name)
VALUES (merge.id, merge.last_name, merge.first_name)
答案 1 :(得分:1)
在执行insert时只检查表中是否已存在这些列值,如果没有,则插入否则不会给出任何结果。
Insert into yourtable(required columns or u can omit if all)
Select ur columns from othertable where (column1,column2) not in
(Select column1,column2 from yourtable)
答案 2 :(得分:0)
最后,我通过使用NOT EXISTS条款来修改solvit。