在Mssql中对UNIQUE KEY约束重复空值违规

use*_*672 7 database sql-server null unique-constraint

MS SQL Server不会忽略空值并将其视为UNIQUE KEY约束的违规,但我所知道的是UNIQUE KEY与接受空值的主键不同.

Violation of UNIQUE KEY constraint 'AK_UserName'. Cannot insert duplicate key in object 'dbo.users'. The duplicate key value is (<NULL>).
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我解决这个问题吗?

Gui*_*doG 18

您可以创建一个忽略这样的空值的唯一索引

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;
Run Code Online (Sandbox Code Playgroud)