2010-03-16 73 views
2

我在select語句中使用insert來將查詢的結果集插入到包含標識列的表中。 我一直在收到錯誤 無法在具有唯一索引'IX_TABLE1'的對象'dbo.TABLE1'中插入重複鍵行。插入從具有標識列的表中選擇

請幫

回答

0

您正在使用的檢索有,當插入到表中的重複值的行select語句,激發你的約束。

您可以通過將數據插入到的唯一索引來驗證列名。一旦你獲得了這個專欄,試着檢查你的select語句將它映射到哪一列並檢查重複記錄。儘管您可能有一個標識列,但您的要插入的表仍然包含與另一列阻止重複記錄的鏈接的約束。

2

對於MSSQL使用WHERE NOT EXISTS

INSERT INTO tbl1 (keycol, col1, col2) 
SELECT keycol, col1, col2 
FROM tbl2 
WHERE NOT EXISTS 
(SELECT 1 
FROM tbl1 
WHERE tbl1.keycol = tbl2.keycol); 

對於MySQL使用INSERT IGNORE

INSERT IGNORE INTO table 
SELECT x, y, z 
FROM table2 
WHERE a=b 

這將跳過任何重複鍵錯誤,只需插入不與現有的唯一/主鍵衝突的行。

0

所有此錯誤的含義是您正嘗試在表格中插入一個已經存在的值。如果你提供更多的信息,我可以嘗試和協助,但你還沒有給出很多信息。