다른 답변의 요점 외에도 두 가지의 주요 차이점이 있습니다.
참고 : 오류 메시지는 SQL Server 2012에서 온 것입니다.
오류
고유 제한 조건을 위반하면 오류 2627이 리턴됩니다.
Msg 2627, Level 14, State 1, Line 1
Violation of UNIQUE KEY constraint 'P1U_pk'. Cannot insert duplicate key in object 'dbo.P1U'. The duplicate key value is (1).
The statement has been terminated.
고유 인덱스를 위반하면 오류 2601이 반환됩니다.
Msg 2601, Level 14, State 1, Line 1
Cannot insert duplicate key row in object 'dbo.P1' with unique index 'P1_u'. The duplicate key value is (1).
The statement has been terminated.
비활성화
고유 제한 조건을 비활성화 할 수 없습니다.
Msg 11415, Level 16, State 1, Line 1
Object 'P1U_pk' cannot be disabled or enabled. This action applies only to foreign key and check constraints.
Msg 4916, Level 16, State 0, Line 1
Could not enable or disable the constraint. See previous errors.
그러나 기본 키 제약 조건 또는 고유 제약 조건 뒤에있는 고유 인덱스는 다른 고유 인덱스와 마찬가지로 비활성화 할 수 있습니다. 모자 팁 Brain2000.
ALTER INDEX P1_u ON dbo.P1 DISABLE ;
클러스터형 인덱스를 비활성화하면 데이터에 액세스 할 수 없게된다는 일반적인 경고에 유의하십시오.
옵션
고유 제약 조건은 FILLFACTOR
and과 같은 인덱싱 옵션을 지원 IGNORE_DUP_KEY
하지만 모든 버전의 SQL Server에는 해당되지 않습니다.
포함 된 열
비 클러스터형 인덱스는 인덱싱되지 않은 열을 포함 할 수 있습니다 (커버링 인덱스라고 함, 이것은 주요 성능 향상입니다). PRIMARY KEY 및 UNIQUE 제약 조건 뒤에있는 인덱스는 열을 포함 할 수 없습니다. 모자 팁 @ypercube.
필터링
고유 제한 조건을 필터링 할 수 없습니다.
고유 인덱스를 필터링 할 수 있습니다.
CREATE UNIQUE NONCLUSTERED INDEX Students6_DrivesLicence_u
ON dbo.Students6( DriversLicenceNo ) WHERE DriversLicenceNo is not null ;
외래 키 제약
외래 키 제약 조건은 필터링 된 고유 인덱스를 참조 할 수 없지만 필터링되지 않은 고유 인덱스를 참조 할 수 있습니다 (SQL Server 2005에서 추가 된 것 같습니다).
명명
구속 조건을 작성할 때 구속 조건 이름을 지정하는 것은 선택 사항입니다 (5 가지 유형의 구속 조건 모두). 이름을 지정하지 않으면 MSSQL이 이름을 생성합니다.
CREATE TABLE dbo.T1 (
TID int not null PRIMARY KEY
) ;
GO
CREATE TABLE dbo.T2 (
TID int not null CONSTRAINT T2_pk PRIMARY KEY
) ;
색인을 작성할 때 이름을 지정해야합니다.
모자 팁 @ i-one.
연결
http://technet.microsoft.com/en-us/library/aa224827(v=SQL.80).aspx
http://technet.microsoft.com/en-us/library/ms177456.aspx