[sql] 내 열 (SQL Server 2008 R2)에 고유 한 제약 조건을 만들려면 어떻게해야합니까?

SQL Server 2008 R2가 있고 고유 한 열을 설정하고 싶습니다.

이를 수행하는 방법에는 “고유 인덱스”와 “고유 제약”이라는 두 가지 방법이 있습니다. 대부분이 고유 한 제약 조건을 권장하지만 자동으로 인덱스를 받기 때문에 내가 이해하는 것과 크게 다르지 않습니다.

고유 한 제약은 어떻게 생성합니까?

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

SQL Server Management Studio를 통해 고유 한 제약 조건을 만드는 방법이 있습니까?



답변

GUI를 통해 이러한 제약 조건을 생성하려면 제약 조건 검사가 아닌 “인덱스 및 키”대화 상자가 필요합니다.

그러나 귀하의 경우에는 이미 가지고있는 코드를 실행하기 만하면됩니다. 표현 대화에 전혀 입력 할 필요가 없습니다.


답변

GUI에서 SQL Server에서 고유 한 열을 설정합니다.

GUI로 헛간을 돌아 다니게 만듭니다.

시작하기 전에 열이 고유 제한 조건을 위반하지 않는지 확인하십시오.

  1. SQL Server Management Studio를 엽니 다.
  2. 테이블을 마우스 오른쪽 버튼으로 클릭하고 “디자인”을 클릭합니다.
  3. 편집 할 열을 마우스 오른쪽 버튼으로 클릭하면 팝업 메뉴가 표시되고 색인 / 키를 클릭합니다.
  4. “추가”버튼을 클릭하십시오.
  5. “일반”탭을 확장합니다.
  6. “열”상자에서 고유하게 만들 열이 선택되어 있는지 확인하십시오.
  7. “유형”상자를 “고유 키”로 변경합니다.
  8. “닫기”를 클릭하십시오.
  9. 파일 창에 작은 별표가 표시됩니다. 이는 변경 사항이 아직 저장되지 않았 음을 의미합니다.
  10. 저장을 누르거나 Ctrl + s를 누르십시오. 저장되어야하며 열은 고유해야합니다.

또는 SQL 쿼리 창에서 열을 고유하게 설정합니다.

alter table location_key drop constraint pinky;
alter table your_table add constraint pinky unique(yourcolumn);

변경 사항은 즉시 적용됩니다.

Command(s) completed successfully.


답변

다음은 개체 탐색기에서 인덱스 (제약 조건이 아님)를 통과하더라도 스크립트가 수행하는 작업을 정확히 수행하는 GUI를 통한 또 다른 방법입니다.

  1. “인덱스”를 마우스 오른쪽 단추로 클릭하고 “새 인덱스 …”를 클릭합니다 (참고 : 디자인보기에서 테이블을 연 경우 비활성화 됨).

여기에 이미지 설명 입력

  1. 새 색인에 이름 ( “U_Name”)을 지정하고 “고유”를 선택한 다음 “추가 …”를 클릭합니다.

여기에 이미지 설명 입력

  1. 다음 창에서 “이름”열을 선택하십시오.

여기에 이미지 설명 입력

  1. 두 창에서 모두 확인을 클릭합니다.

답변

명확하게 다루지 않은 한 가지는 Microsoft SQL이 추가 된 제약 조건에 대한 고유 인덱스를 백그라운드에서 생성하고 있다는 것입니다.

create table Customer ( id int primary key identity (1,1) , name nvarchar(128) )

--Commands completed successfully.

sp_help Customer

---> index
--index_name    index_description   index_keys
--PK__Customer__3213E83FCC4A1DFA    clustered, unique, primary key located on PRIMARY   id

---> constraint
--constraint_type   constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
--PRIMARY KEY (clustered)   PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id


---- now adding the unique constraint

ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)

-- Commands completed successfully.

sp_help Customer

---> index
---index_name   index_description   index_keys
---PK__Customer__3213E83FCC4A1DFA   clustered, unique, primary key located on PRIMARY   id
---U_Name   nonclustered, unique, unique key located on PRIMARY name

---> constraint
---constraint_type  constraint_name delete_action   update_action   status_enabled  status_for_replication  constraint_keys
---PRIMARY KEY (clustered)  PK__Customer__3213E83FCC4A1DFA  (n/a)   (n/a)   (n/a)   (n/a)   id
---UNIQUE (non-clustered)   U_Name  (n/a)   (n/a)   (n/a)   (n/a)   name

보시다시피 새로운 제약 조건과 새로운 인덱스 U_Name이 있습니다.


답변