MS-SQL > 기존 컬럼을 IDENTITY 속성으로 변경하기
등록일 : 2019-09-04 19:47
조회수 : 92,916
CREATE TABLE DBO.TMP_TBL1(
COL1 INT NOT NULL IDENTITY (1, 1),
COL2 DATETIME NULL)
ON [PRIMARY]
GO
ALTER TABLE DBO.TMP_TBL1 SET (LOCK_ESCALATION = TABLE)
GO
SET IDENTITY_INSERT DBO.TMP_TBL1 ON
GO
IF EXISTS(SELECT * FROM DBO.TBL1)
EXEC('INSERT INTO DBO.TMP_TBL1 (COL1, COL2)
SELECT COL1, COL2 FROM DBO.TBL1 WITH (HOLDLOCK TABLOCKX)')
GO
SET IDENTITY_INSERT DBO.TMP_TBL1 OFF
GO
DROP TABLE DBO.TBL1
GO
EXECUTE SP_RENAME N'DBO.TMP_TBL1', N'TBL1', 'OBJECT'
기존에 데이터가 들어가 있는 identity 칼럼을 쿼리를 통해 (Alter Table) 바로 속성을 변경하는 방법은 없습니다.
아래와 같은 방식으로 가능합니다.
1.Tmp_TBL1을 만들고
2.TBL1의 데이터를 Tmp_TBL1에 부어 넣은 다음
3.기존 TBL1은 DROP 하고
4.Tmp_TBL1의 이름을 수정하는 것이었습니다.