작성일 : 11-11-01 21:52
|
[MsSQL] identity 속성 컬럼에 값 강제 입력
|
|
|
글쓴이 :
Mr가망생
 조회 : 4,949
|
:Identity를 선언한 경우에는 인서트 시 ,Identity선언 컬럼의 값을 임의로 지정할 수 없다
ex) insert into test(no,name) values(1000,'James')
다음 구문은 테이블 생성 시 디폴트 값으로 임의의 번호로 지정하고 싶거나, 삭제된 번호를 채워 넣고 싶을 때 유용한 방법이다.
SET IDENTITY_INSERT [테이블명] ON; -- 증가값을 수동 지정
SET IDENTITY_INSERT [테이블명] OFF; -- 증가값을 자동 지정 (보통 우리가 사용하는 상태 )
DBCC CHECKIDENT ('[테이블명]', RESEED, 0); -- 시작값을 임의 지정
위 구문을 사용할때, 아래와 같이
insert table명(내부컬럼명 반드시 입력) values()
SET IDENTITY_INSERT TLS_SENTENCE ON; -- IDENTITY 값 임시제거
INSERT INTO TLS_SENTENCE(SENTENCE_SEQ,SENTENCE)
select max(dd), ee from @tblvar_first group by ee
SET IDENTITY_INSERT TLS_SENTENCE OFF; -- IDENTITY 값 복구
사용예)
SET IDENTITY_INSERT test ON; -- Identity 증가값을 수동지정
insert test(no,name) values(99999,'admin') --수동입력 가능
SET IDENTITY_INSERT product_lank OFF; --Identity 증가값을 자동지정
--※ 증가값이 최초 1-->99999 변경되어짐 즉,다음 인서트 값 Identity는 100000 됨
DBCC CHECKIDENT ('product_lank', RESEED, 0); -- 시작값을 0으로 지정, 다음 증가값은 1이됨.
|
|