기본 사용법 사용
create table test(
no int identity(1,1) NOT NULL, --(시작할 숫자값, 증가할 숫자값)
)
인서트시 증가된 값 얻어오기
Identity를 설정해준 테이블에 인서트한 경우 인서트한 identity 불러오기 위해서는 보통 다시한번 select를 해주게 된다.
인서트 쿼리 뒤에 select @@Identity을 붙여 주면 insert한 row의 identity를 불러올 수 있다.
사용예)
insert into test(name) values('James') select @@Identity as 'id'
(as 'id'는 별칭이므로 아무거라도 상관 없다.)
증가값을 임의로 정하기
:Identity를 선언한 경우에는 인서트 시 ,Identity선언 컬럼의 값을 임의로 지정할 수 없다
insert into test(no,name) values(1000,'James');
테이블 생성 시 디폴트 값으로 임의의 번호로 지정하고 싶거나, 삭제된 번호를 채워 넣고 싶을 때 유용한 방법이다.
SET IDENTITY_INSERT [테이블명] ON;
--증가값을 수동 지정
SET IDENTITY_INSERT [테이블명] OFF;
-- 증가값을 자동 지정 (보통 우리가 사용하는 상태 )
DBCC CHECKIDENT ('[테이블명]', RESEED, 0);
-- 시작값을 임의 지정
사용예)
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이됨.
출처 : https://bky1107.tistory.com/17
* SQL SERVER : IDENTITY [ ( seed , increment ) ]
- SEED : 첫번째 행이 입력될 때의 시작값
- increment : 증가되는 값
- 해당 컬럼에 값을 넣을 경우 Error 발생
(Error 발생을 막기 위해서는 IDENTITY_INSERT 를 OFF 로 하면 되나 이런 경우 IDENTITY 를 쓴 의미가 없어짐)
728x90
반응형
'DB > SQL' 카테고리의 다른 글
오라클 NL Join, Sort Merge Join, Hash Join 특징 총정리 (0) | 2021.08.31 |
---|---|
[ORACLE]오라클_제약조건( CHECK ) (0) | 2021.08.31 |
숫자함수 ROUND, FLOOR, CEIL ,TRUNCATE (0) | 2021.08.31 |
[SQL] ANY / ALL / EXISTS / NOT EXISTS (0) | 2021.08.31 |
[MS-SQL]UNION ALL로 소계, 합계 구하기 (0) | 2021.07.21 |
댓글