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