我正在使用SQL Server 2012,我有以下用户定义的表类型
CREATE TYPE [dbo].[IdentifierCodeTable] AS TABLE(
[Id] [dbo].[Identifier] NULL,
[Code] [dbo].[Code] NULL
)
我正在尝试强制Id
必须为Unique
,但NULL
值除外。
我有以下代码,它适用于NON NULL
值,但当我尝试插入2 NULL
个值时,它不允许我这样做。
CREATE TYPE [dbo].[IdentifierCodeTable] AS TABLE(
[Id] [dbo].[Identifier] NULL,
[Code] [dbo].[Code] NULL,
UNIQUE(Id)
)
有没有办法从UNIQUE Constraint中排除NULL
值,就像我可以在带有过滤器的常规索引中那样做?
答案 0 :(得分:2)
我认为这是我需要知道的(它是SQL Server 2008,但我认为它也适用于SQL Server 2012)。
无法在用户定义的表类型上创建非聚簇索引,除非索引是在用户定义的表类型上创建PRIMARY KEY或UNIQUE约束的结果。 (SQL Server通过使用索引强制执行任何UNIQUE或PRIMARY KEY约束。)
来源:https://technet.microsoft.com/en-us/library/bb522526%28v=sql.105%29.aspx