gpt4 book ai didi

sql-server - 如何为 2 个可为空的列添加唯一约束?

转载 作者:行者123 更新时间:2023-12-04 05:13:05 24 4
gpt4 key购买 nike

谁知道如何为两列都允许 NULL 的一组 2 列创建唯一约束?我的意思是忽略 col1=NULL AND col2=NULL 的唯一性,但是让约束在只有其中一个为 NULL 的情况下起作用?我找到了如何为单列( How do I create a unique constraint that also allows nulls? )做到这一点,但不能为 2 列做到这一点。这是我的脚本,适用于现有记录(允许多个 NULL,NULL),但不允许添加任何新的 NULL、NULL 记录:

CREATE UNIQUE NONCLUSTERED INDEX MyIndex ON dbo.MyTable(col1, col2)     
WHERE col1 IS NOT NULL AND col2 IS NOT NULL

更新:嗯,它允许你添加新的 (NULL, NULL) 值,所以我错了,但是它也允许你添加我不想成为的 (1, NULL), (1, NULL) 之类的东西,所以唯一性应该对于这种情况,应该只允许多个 (NULL, NULL)。如何做到这一点?

最佳答案

其他的东西肯定是行不通的。您的代码/脚本按预期工作:

CREATE TABLE #MyTable
(
Col1 INT NULL,
Col2 INT NULL
)

CREATE UNIQUE NONCLUSTERED INDEX MyIndex ON #MyTable(col1, col2)
WHERE col1 IS NOT NULL AND col2 IS NOT NULL

INSERT INTO #MyTable(Col1, Col2)
VALUES(NULL, NULL) --Works

INSERT INTO #MyTable(Col1, Col2)
VALUES(NULL, NULL) --Works

SELECT * FROM #MyTable

INSERT INTO #MyTable(Col1, Col2)
VALUES(1, 1) --Works

INSERT INTO #MyTable(Col1, Col2)
VALUES(1, 1) --Fails

SELECT * FROM #MyTable

DROP TABLE #MyTable

关于sql-server - 如何为 2 个可为空的列添加唯一约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14650090/

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