在UDT字段中排除NULL的唯一约束

时间:2015-04-22 16:55:42

标签: sql sql-server

我正在使用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 Con​​straint中排除NULL值,就像我可以在带有过滤器的常规索引中那样做?

1 个答案:

答案 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

相关问题