[MSSQL] ID설정 무시하기

MSSQL #IDENTITY_INSERT #ID열의 명시적 값 #IDENTITY_INSERT가 ON일 때 #MSSQL오류 #해결방법 #꿀팁

포스팅 목차 바로가기

안녕하세요, 배곧동개발자 입니다.

1. 오류

테이블에 새로운 row를 넣고 싶은데 ID값이 설정되어 있는 경우 아래와 같이 오류가 나서 insert가 안되지요.

ID 열의 명시적 값은 열 목록이 사용되고 IDENTITY_INSERT가 ON일 때만 지정할 수 있습니다.

하지만, 나는 넣고 싶다 이거야. 그럴땐 어떻게 하냐?


2. 원인

위에 설명했듯이 내가 insert를 하고 싶은 테이블에 id값이 설정되어 있으면 저렇게 에러가 뜹니다.

그렇다고 ID사양 설정을 풀순 없고, 심지어 insert 칠 때마다 풀어야 한다? 큰일납니다.


3. 해결방법

그렇다면 어떻게 해야하나? 아주 간단하게 쿼리의 앞뒤에 한줄씩 추가해주시면 됩니다.

SET IDENTITY_INSERT 테이블명 ON
SET IDENTITY_INSERT 테이블명 OFF

요거를 써서 값을 넣을 수 있지요. 바로 이렇게요.

SET IDENTITY_INSERT TBL_A ON

insert into TBL_A
select * from TBL_B

SET IDENTITY_INSERT TBL_A OFF

자. 저는 분명 이렇게 배웠어요. 그래서 직접 해봤는데

응? 똑같이 안되는데? 인터넷엔 이 방법 뿐이 없는데?

찾고 찾고 또 찾다보니 이렇게 된 이유는 바로! 컬럼이 명시되지 않아서였어요.

SET IDENTITY_INSERT TBL_A ON

insert into TBL_A(a,b,c,d)
select a,b,c,d from TBL_B

SET IDENTITY_INSERT TBL_A OFF

이렇게 한땀한땀 컬럼을 다 입력해주고 쿼리를 실행해보면?

짜잔- 컬럼을 다 써줘야 하는것이였어요. 좀 답답하긴 하지만! 해결방법을 찾았다는거에 의의를 둡시다!

이만, 배곧동개발자 이였습니다.

Leave a Comment