IDENTITY
제약 은 그래서 당신이 추가하는 방법이 초기 생각을 할 필요가, 기존의 열에 추가 할 수 없습니다. 두 가지 옵션이 있습니다 :
- 기존 'P_ID'열을 정체성과 기본 키를 포함하여 새 테이블을 만들고 기존 테이블을
- 드롭 정체성을 가진 새로운 기본 키 열을 만들고 드롭
세 번째 방법은 ALTER TABLE...SWITCH
문을 통해 매우 큰 테이블에 대한 더 나은 접근 방법입니다. 각각의 예제는 Adding an IDENTITY
to an existing column을 참조하십시오.
-- Check that the table/column exist and no primary key is already on the table.
IF COL_LENGTH('PERSONS','P_ID') IS NOT NULL
AND NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = 'PERSONS')
-- Add table schema to the WHERE clause above e.g. AND TABLE_SCHEMA ='dbo'
BEGIN
ALTER TABLE PERSONS
ADD P_ID_new int IDENTITY(1, 1)
GO
ALTER TABLE PERSONS
DROP COLUMN P_ID
GO
EXEC sp_rename 'PERSONS.P_ID_new', 'P_ID', 'Column'
GO
ALTER TABLE PERSONS
ADD CONSTRAINT PK_P_ID PRIMARY KEY CLUSTERED (P_ID)
GO
END
참고 : 테이블이 너무 크지 않은 경우는이 질문에 대한 대답에서, 나는 다음을 실행하는 것이 좋습니다 을 명시 적으로 CONSTRAINT
키워드를 기본 키 제약 조건을 사용하여 특정 이름보다는 주어집니다 SQL Server에 따라 이름을 자동으로 할당 할 수 있습니다.
CLUSTERED
에만 특정 P_ID 및 쓰기 양에 대한 검색 균형이 다른 색인에 의한 테이블 클러스터링의 이점을 초과하는 경우 에 포함하십시오. Create SQL IDENTITY
as PRIMARY KEY
을 참조하십시오.
귀하는 하나의 대답을 수락 된 것으로 표시해야합니다. –