본문 바로가기
Programming/MSSQL

클러스터드 인덱스 DROP 후 RECREATE 하기

by 제타 2018. 7. 16.
반응형

SQL SERVER(MSSQL)에서 클러스터드 인덱스에 컬럼 하나를 추가하고자 DROP 후에 다시 만들려고 할 때 안되는 경우가 있습니다. 즉 PK 제약조건이 설정되어 있어서 안되는 경우인데 이럴 경우에 DROP을 하려고 하면 다음과 같은 에러가 뜹니다.


즉 "인덱스 TEST_TABLE.PK__TEST_TABLE에서는 명시적 DROP INDEX를 사용할 수 없습니다. 이 인덱스는 PRIMARY KEY 제약 조건 설정에 사용 중입니다. 라는 에러가 뜹니다.





이럴 땐 다음과 같이 DROP 후에 다시 만들어주면 됩니다.


GO


ALTER TABLE [dbo].[TEST_TABLE] DROP CONSTRAINT [PK__TEST_TABLE]


GO


ALTER TABLE [dbo].[TEST_TABLE] ADD  CONSTRAINT [PK__TEST_TABLE] PRIMARY KEY CLUSTERED 

(

[COL1] ASC,

[COL2] ASC,

[COL3] ASC,

[COL4] ASC,

[COL5] 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)


GO


이렇게 다시 만들면 됩니다.


그럼 어떤 경우에 클러스터드 인덱스를 다시 만들까요?

PK가 클러스터드 인덱스로 되어있고 여기에 컬럼을 하나 추가하고 싶을 때 다시 이렇게 다시 만들면 되겠죠?

물론 운영 중이거나 테이블이 클 때는 조심해서 사용해야 합니다.



반응형