gpt4 book ai didi

sql-server - 忽略索引上的重复值可防止 FOREIGN KEY 约束

转载 作者:行者123 更新时间:2023-12-04 06:10:01 26 4
gpt4 key购买 nike

由于某些架构原因,我不得不忽略索引上的重复值。它工作得很好——除非我插入了错误的数据。我正在尝试将值插入应该抛出的 FK 列:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK__constrainName".
The conflict occurred in database, table "someTable", column '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 约束,因此不会出错。

关于sql-server - 忽略索引上的重复值可防止 FOREIGN KEY 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com