2

기존 테이블의 필드에 대해 WHERE 절을 사용하여 UNIQUE 제약 조건을 만들 수 있지만 CREATE TABLE 문에 제약 조건을 만들 수 있습니까? 같은 즉, 뭔가 (내가이 유효하지 않은 구문을 알고)은 빈 문자열입니다하지 않는 한 [Name] 필드, 고유해야되고 여기에 목표로TABLE CREATE에 WHERE 절이있는 UNIQUE NONCLUSTERED?

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

.

답변

0

아니요, 불가능합니다.

필터링 된 인덱스는 만들 수 있지만 필터링 된 제약 조건은 만들 수 없으므로 구문에서 허용하지 않습니다.

[ 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) 
}