테스트를 위해 IDENTITY열을 포함한 테이블을 하나 만듭니다.CREATE TABLE TBL1 (COL1 INT IDENTITY(1,1), COL2 DATETIME)이 테이블에 데이터를 3건 집어 넣습니다.INSERT INTO TBL1 (COL2) SELECT GETDATE() GO 3데이터는 다음과 같습니다.COL1 COL2 1 2014-05-12 12:13:20.727 2 2014-05-12 12:13:20.740 3 2014-05-12 12:13:20.747IDENTITY가 3까지 증가하였습니다. 여기에 임의로 IDENTITY값 4를 가진 데이터를 추가하려면 IDENTITY_INSERT ON을 사용합니다.SET IDENTITY_INSERT TBL1 ON GO INSERT INTO TBL1 (COL1, COL2) SELECT 4, GETDATE() GO SET IDENTITY_INSERT TBL1 OFF결과는 다음과 같습니다.COL1 COL2 1 2014-05-12 12:13:20.727 2 2014-05-12 12:13:20.740 3 2014-05-12 12:13:20.747 4 2014-05-12 12:15:46.210이번에는 IDENTITY열을 수정해보겠습니다.UPDATE TBL1 SET COL1 = 5 WHERE COL1 = 1이 문장을 수행했더니 다음과 같은 에러가 발생했습니다.메시지 8102, 수준 16, 상태 1, 줄 1 ID 열 'COL1'을(를) 업데이트할 수 없습니다.무엇을 잘못했을까요?? 아하!! IDENTITY_INSERT를 설정하지 않았군요. 이번엔 이렇게 해보겠습니다.SET IDENTITY_INSERT TBL1 ON GO UPDATE TBL1 SET COL1 = 5 WHERE COL1 = 1 GO SET IDENTITY_INSERT TBL1 OFF역시나 마찬가지로 다음의 에러가 발생합니다.메시지 8102, 수준 16, 상태 1, 줄 1 ID 열 'COL1'을(를) 업데이트할 수 없습니다.혹시나 IDENTITY_UPDATE가 있는지 살펴보았지만 그런건 없습니다. 결론은 IDENTITY열의 UPDATE는 안됩니다.
2014년 5월 12일 월요일
IDENTITY열은 UPDATE가 되나요?
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기