SQL Server 2005 고유 제약 조건을 만드는 방법


181

SQL Server 2005의 기존 테이블에서 고유 제약 조건을 어떻게 만듭니 까?

데이터베이스 다이어그램에서 TSQL과 수행 방법을 모두 찾고 있습니다.

답변:


272

SQL 명령은 다음과 같습니다.

ALTER TABLE <tablename> ADD CONSTRAINT
            <constraintname> UNIQUE NONCLUSTERED
    (
                <columnname>
    )

전체 구문을 보려면 여기를 참조 하십시오 .

데이터베이스 다이어그램에서 수행하려는 경우 :

  • 표를 마우스 오른쪽 버튼으로 클릭하고 '색인 / 키'를 선택하십시오.
  • 추가 버튼을 클릭하여 새 색인을 추가하십시오
  • 오른쪽의 속성에 필요한 정보를 입력하십시오.
    • 원하는 열 (줄임표 단추를 클릭하여 선택)
    • 고유함을 예로 설정
    • 적절한 이름을 부여하십시오

1
작동하지만 ..... 제약 조건이 CONSTRAINTS 폴더 대신 INDEX 폴더 아래에 표시되는 이유는 무엇입니까? 다른 아이콘과 함께 표시되지만 어쨌든 constraints 폴더에 있어야합니다.
페르난도 토레스

84

SQL Server Management Studio Express에서 :

  • 테이블을 마우스 오른쪽 버튼으로 클릭하고 수정 또는 디자인 (나중 버전의 경우)을 선택하십시오.
  • 필드를 마우스 오른쪽 버튼으로 클릭하고 색인 / 키 ...를 선택하십시오 .
  • 클릭 추가
  • 들어 , 선택 필드 이름 은 고유해야 할입니다.
  • 위해 유형 선택 고유 키 .
  • 클릭 닫기 , 저장을 표.


15

경고 : 고유하게 설정 한 열에는 하나의 null 행만있을 수 있습니다.

SQL 2008에서 필터링 된 인덱스를 사용하여이 작업을 수행 할 수 있습니다.

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;

응답 범위 가 NULL이 아닌 경우 필드 값은 고유해야 함을 참조하십시오 .


SQL Server 2005에서 어떻게합니까?
Maxrunner

2
SQL Server 2005에서는 달성 할 수 없습니다. 최신 RDBMS로 업그레이드하는 것이 좋습니다 . 2016 년 4 월 12 일부터 공식적으로 지원되지 않습니다 .
reedstonefood

13
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
            <namingconventionconstraint> UNIQUE NONCLUSTERED
    (
                <columnname>
    ) ON [PRIMARY]

10

또한 데이터베이스 다이어그램을 통해이 작업을 수행 할 수 있다는 것을 알았습니다.

테이블을 마우스 오른쪽 단추로 클릭하고 색인 / 키 ...를 선택하십시오.

'추가'버튼을 클릭하고 열을 고유하게 만들려는 열로 변경하십시오.

고유를 예로 변경하십시오.

닫기를 클릭하고 다이어그램을 저장하면 테이블에 추가됩니다.


8

다음과 같은 것을 찾고 있습니다.

ALTER TABLE dbo.doc_exz
ADD CONSTRAINT col_b_def
UNIQUE column_b

MSDN 문서


6

테이블이 이미 작성되었을 때 하나 이상의 열에 UNIQUE 제약 조건을 만들려면 다음 SQL을 사용하십시오.

ALTER TABLE TableName ADd UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

위 쿼리에 대한 UNIQUE 제약 조건의 이름 지정을 허용하려면

ALTER TABLE TableName ADD CONSTRAINT un_constaint_name UNIQUE (ColumnName1,ColumnName2, ColumnName3, ...)

MySQL / SQL Server / Oracle / MS Access에서 지원하는 쿼리입니다.


UNIQUE NONCLUSTERED옵션 PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ?
Kiquenet

5

관리 스튜디오 다이어그램에서 테이블을 선택하고 원하는 경우 마우스 오른쪽 버튼을 클릭하여 새 열을 추가하고 열을 마우스 오른쪽 버튼으로 클릭 한 다음 "제약 확인"을 선택하면 테이블을 추가 할 수 있습니다.


0

경우에 따라 고유 키를 작성하기 전에 존재하지 않는 것이 바람직 할 수 있습니다. 이러한 경우 아래 스크립트가 도움이 될 수 있습니다.

IF Exists(SELECT * FROM sys.indexes WHERE name Like '<index_name>')
    ALTER TABLE dbo.<target_table_name> DROP CONSTRAINT <index_name> 
GO

ALTER TABLE dbo.<target_table_name> ADD CONSTRAINT <index_name> UNIQUE NONCLUSTERED (<col_1>, <col_2>, ..., <col_n>) 
GO
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.