mssql에서 PK를 추가하려면 기존의 PK를 삭제해주고 재생성해줘야한다.
mytable에 PK을 하나 더 추가하려고 PK 추가 구문을 아래와 같이 호출하면,
아래와 같이 이미 기본키가 정의되었다는 에러메세지가 나오면서 실패한다.
ALTER TABLE [dbo].[mytable] ADD CONSTRAINT [PK_mytable] PRIMARY KEY CLUSTERED
(
[otherPKColumn] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
메시지 1779, 수준 16, 상태 0, 줄 9
테이블 'mytable'에 이미 기본 키가 정의되어 있습니다.
메시지 1750, 수준 16, 상태 0, 줄 9
제약 조건을 만들 수 없습니다. 이전 오류를 참조하십시오.
때문에 아래 호출을 통해 기본키를 정의한 PK 테이블 이름을 확인한다음,
sp_helpconstraint [mytable]
constraint_type constraint_name delete_action update_action status_enabled status_for_replication constraint_keys
PRIMARY KEY(clustered) PK_mytable (n/a) (n/a) (n/a) (n/a) Seq
Drop문으로 날려주고 재생성해야한다.
ALTER TABLE dbo.mytable DROP CONSTRAINT PK_mytable
ALTER TABLE [dbo].[mytable] ADD CONSTRAINT [PK_mytable] PRIMARY KEY CLUSTERED
(
[Seq] ASC,
[otherPKColumn] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
'SQL' 카테고리의 다른 글
[mssql] insert into select 사용하기 (0) | 2019.03.04 |
---|---|
[mssql] id값 인서트하기 (0) | 2019.02.12 |
[mssql] 데이터별 갯수 확인 쿼리 (0) | 2019.02.12 |