SQLServer IDENTITY_INSERT 오류 메시지

Msg 8101, Level 16, State 1, Line 4
테이블 'tb_user_permission'에 있는 ID 열의 명시적 값은 열 목록이 사용되고 IDENTITY_INSERT가 ON일 때만 지정할 수 있습니다. 

 

먼저 위의 오류가 발생한 원인은 

MSSQL에서 해당 table의 특정 컬럼이 IDENTITY 속성이 적용되어 있을 때

임의로 지정된 값을 insert하려 할 때 "쿼리가 완료되었으나 오류가 발생했습니다." 라는 결과와 함께 위의 에러가 발생합니다.

 

Insert 시 IDENTITY로 지정된 컬럼은 max + 1의 값이 자동으로 생성되어 저장됩니다.

 

자동으로 생성되어 저장되지만 직접 특정값을 insert 해야할 상황이 있습니다.

그럴 경우 IDENTITY_INSERT 속성을 ON 한 후 insert 쿼리를 실행해야 오류가 발생하지 않습니다.

 

 

SET IDENTITY_INSERT [tableName] ON  

해줬는데도 위와같은 에러가 계속 발생하는경우가 있다.

그럴경우 아래같이 컬럼을 명시해준다!!!!!

insert into [테이블이름] (컬럼1, 컬럼2, 컬럼3...)
select (컬럼1, 컬럼2, 컬럼3...) from [복사원본테이블]

 

<< indentity 컬럼이 있는 테이블에 데이터 입력 예제 >>

SET IDENTITY_INSERT tb_user_permission ON

insert into tb_user_permission(id, user_id, permission_code, doc_id, from_date, modified, created)
select id, user_id, permission_code, doc_id, from_date, modified, created from del_dev.dbo.tb_user_permission;

SET IDENTITY_INSERT tb_user_permission OFF;

 

 

 

 

+ Recent posts