Programming/MS SQL Server
[MS SQL SERVER] IDENTITY()
hoojiv
2021. 10. 28. 18:13
728x90
IDNEITTY는 순차적으로 증가는 숫자값으로 보통 시퀀스를 생성할 때 많이 사용된다.
IDENTITY 라고만 명시하면 1부터 시작하여 1씩 증가하는 기본적인 값이고
IDENTITY(10,10) 이런식으로 안에 값을 지정하면 시작값, 증가값으로 설정이 가능하다.
즉, 10부터 시작하여 10씩 증가하게 된다.
--########################
-- IDENTITY
--########################
/*
DROP TABLE dbo.UserTbl;
*/
CREATE TABLE dbo.UserTbl (
USERID INT IDENTITY(10,10), --10부터 시작하여 10씩 증가
NAME VARCHAR(10),
AGE INT,
ADDR VARCHAR(20)
)
GO
CREATE TABLE dbo.UserIdentity (
IDEN INT
)
GO
INSERT INTO UserTbl
(NAME, AGE, ADDR)
OUTPUT inserted.USERID
VALUES ('Ken', 20, 'Seattle');
INSERT INTO UserTbl
(NAME, AGE, ADDR)
OUTPUT inserted.USERID
VALUES ('Terri', 21, 'Portland');
보통은 순차적으로 증가하는 시퀀스 값으로 사용하기 때문에 해당 값을 리턴받아서 다시 사용하는 경우가 많다.
이 경우에는 @@IDENTITY라는 구문을 사용한다.
--########################
-- REUSING IDENTITY VALUE
--########################
BEGIN TRAN
BEGIN TRY
INSERT INTO UserTbl (NAME, AGE, ADDR)
VALUES ('Roberto', '20', 'North Bend')
INSERT INTO UserIdentity
VALUES (@@IDENTITY)
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
END CATCH
IF @@TRANCOUNT > 0
COMMIT TRAN
GO
728x90
LIST