【问题标题】:UNIQUE NONCLUSTERED with WHERE clause in TABLE CREATE?TABLE CREATE 中带有 WHERE 子句的 UNIQUE NONCLUSTERED?
【发布时间】:2014-08-11 13:12:03
【问题描述】:

我知道可以使用WHERE 子句为现有表中的字段创建UNIQUE 约束,但是否可以在CREATE TABLE 语句中创建它们?即类似的东西(我知道这是无效的语法):

CREATE TABLE [ExampleTable]
(
    [ID]    INT IDENTITY(1,1) PRIMARY KEY   NOT NULL,
    [Name]  NVARCHAR(20)    DEFAULT ''  NOT NULL UNIQUE NONCLUSTERED WHERE [Name] <> ''
)

这里的目的是 [Name] 字段必须是唯一的,除非它是一个空白字符串。

【问题讨论】:

    标签: sql-server-2008-r2 where-clause unique-constraint create-table


    【解决方案1】:

    不,你不能。

    您可以创建过滤索引但不能创建过滤约束,语法不允许这样做。

    [ CONSTRAINT constraint_name ] 
    { 
        [ NULL | NOT NULL ] 
        { PRIMARY KEY | UNIQUE } 
            [ CLUSTERED | NONCLUSTERED ] 
            [ WITH FILLFACTOR =fillfactor ] 
            [ WITH ( index_option [, ...n ] ) ]
            [ ON { partition_scheme_name (partition_column_name) 
                | filegroup | "default" } ] 
        | [ FOREIGN KEY ] 
            REFERENCES [ schema_name . ] referenced_table_name 
                [ ( ref_column ) ] 
            [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
            [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
            [ NOT FOR REPLICATION ] 
        | CHECK [ NOT FOR REPLICATION ] ( logical_expression )
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-01
      • 2015-12-30
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-23
      • 2011-08-02
      • 1970-01-01
      相关资源
      最近更新 更多