SQL Server 2008 R2가 있고 고유 한 열을 설정하고 싶습니다.
이를 수행하는 방법에는 “고유 인덱스”와 “고유 제약”이라는 두 가지 방법이 있습니다. 대부분이 고유 한 제약 조건을 권장하지만 자동으로 인덱스를 받기 때문에 내가 이해하는 것과 크게 다르지 않습니다.
고유 한 제약은 어떻게 생성합니까?
ALTER TABLE Customer ADD CONSTRAINT U_Name UNIQUE(Name)
SQL Server Management Studio를 통해 고유 한 제약 조건을 만드는 방법이 있습니까?
답변
GUI를 통해 이러한 제약 조건을 생성하려면 제약 조건 검사가 아닌 “인덱스 및 키”대화 상자가 필요합니다.
그러나 귀하의 경우에는 이미 가지고있는 코드를 실행하기 만하면됩니다. 표현 대화에 전혀 입력 할 필요가 없습니다.
답변
GUI에서 SQL Server에서 고유 한 열을 설정합니다.
GUI로 헛간을 돌아 다니게 만듭니다.
시작하기 전에 열이 고유 제한 조건을 위반하지 않는지 확인하십시오.
- SQL Server Management Studio를 엽니 다.
- 테이블을 마우스 오른쪽 버튼으로 클릭하고 “디자인”을 클릭합니다.
- 편집 할 열을 마우스 오른쪽 버튼으로 클릭하면 팝업 메뉴가 표시되고 색인 / 키를 클릭합니다.
- “추가”버튼을 클릭하십시오.
- “일반”탭을 확장합니다.
- “열”상자에서 고유하게 만들 열이 선택되어 있는지 확인하십시오.
- “유형”상자를 “고유 키”로 변경합니다.
- “닫기”를 클릭하십시오.
- 파일 창에 작은 별표가 표시됩니다. 이는 변경 사항이 아직 저장되지 않았 음을 의미합니다.
- 저장을 누르거나 Ctrl + s를 누르십시오. 저장되어야하며 열은 고유해야합니다.
또는 SQL 쿼리 창에서 열을 고유하게 설정합니다.
alter table location_key drop constraint pinky;
alter table your_table add constraint pinky unique(yourcolumn);
변경 사항은 즉시 적용됩니다.
Command(s) completed successfully.
답변
다음은 개체 탐색기에서 인덱스 (제약 조건이 아님)를 통과하더라도 스크립트가 수행하는 작업을 정확히 수행하는 GUI를 통한 또 다른 방법입니다.
- “인덱스”를 마우스 오른쪽 단추로 클릭하고 “새 인덱스 …”를 클릭합니다 (참고 : 디자인보기에서 테이블을 연 경우 비활성화 됨).
- 새 색인에 이름 ( “U_Name”)을 지정하고 “고유”를 선택한 다음 “추가 …”를 클릭합니다.
- 다음 창에서 “이름”열을 선택하십시오.
- 두 창에서 모두 확인을 클릭합니다.
답변
명확하게 다루지 않은 한 가지는 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이 있습니다.