1
由於某些體系結構原因,我必須忽略索引上的重複值。它工作得很好 - 除了當我插入錯誤的數據。我正在嘗試嚮應該拋出的FK列插入值:忽略索引上的重複值可防止FOREIGN KEY約束
INSERT語句與FOREIGN KEY約束「FK__constrainName」衝突。
數據庫中發生衝突,表「someTable」,列'FKColumn'。
是否有邏輯背後忽略重複值,防止插入語句引發此異常?
由於某些體系結構原因,我必須忽略索引上的重複值。它工作得很好 - 除了當我插入錯誤的數據。我正在嘗試嚮應該拋出的FK列插入值:忽略索引上的重複值可防止FOREIGN KEY約束
INSERT語句與FOREIGN KEY約束「FK__constrainName」衝突。
數據庫中發生衝突,表「someTable」,列'FKColumn'。
是否有邏輯背後忽略重複值,防止插入語句引發此異常?
我假設你在談論這種情況?
CREATE TABLE T2(T2_ID INT PRIMARY KEY)
INSERT INTO T2 VALUES (1),(2)
CREATE TABLE T1 (T1_ID INT, T2_ID INT REFERENCES T2)
CREATE UNIQUE CLUSTERED INDEX IX ON T1(T1_ID) WITH IGNORE_DUP_KEY
INSERT INTO T1 VALUES (1,2),(1,2),(2,3),(2,3)
/*FK Violation - No rows inserted*/
SELECT *
FROM T1
/*Duplicate key violation and potential FK Violation - one row inserted*/
INSERT INTO T1 VALUES (1,2),(1,2),(1,3),(1,3)
SELECT *
FROM T1
DROP TABLE T1
DROP TABLE T2
如果行不插入,因爲這會導致重複鍵衝突,則FK約束沒有違反插入以下,因此沒有錯誤。
現在看起來很明顯。謝謝。 – Falcon