IF OBJECT_ID('dbo.T1', 'U') IS NOT NULL DROP TABLE dbo.T1; CREATE TABLE dbo.T1(col1 INT NULL, col2 VARCHAR(10) NOT NULL); GO CREATE UNIQUE NONCLUSTERED INDEX idx_col1_notnull ON dbo.T1(col1) WHERE col1 IS NOT NULL; GO
将以下代码运行2次,尝试向表中插入2行COL1列具有相同非NUL值的行
INSERT INTO dbo.T1(col1, col2) VALUES(1, 'a');
代码的第2次运行将失败,提示以下错误信息:/*
Msg 2601, Level 14, State 1, Line 1
Cannot insert duplicate key row in object 'dbo.T1' with unique index 'idx_col1_notnull'.
The statement has been terminated.
*/
将以下代码运行2次,尝试向表中插入2行COL1列为NULL的行:
-- Run following twice INSERT INTO dbo.T1(col1, col2) VALUES(NULL, 'a');
这次两行都插入了。
-- Cleanup DROP INDEX Sales.SalesOrderHeader.idx_currate_notnull;