문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

SET IDENTITY_INSERT(Transact-SQL)

명시적 값을 테이블의 ID 열에 삽입할 수 있도록 합니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }

database_name

지정한 테이블이 있는 데이터베이스의 이름입니다.

schema_name

테이블이 속한 스키마의 이름입니다.

table

ID 열이 있는 테이블의 이름입니다.

언제든지 세션에서 한 테이블의 IDENTITY_INSERT 속성만 ON으로 설정할 수 있습니다. 한 테이블에 이 속성이 ON으로 설정되어 있는데 다른 테이블에 대해 SET IDENTITY_INSERT ON 문을 실행하면 SQL Server는 SET IDENTITY_INSERT가 이미 ON으로 설정되어 있음을 알리고 ON으로 설정된 테이블을 보고하는 오류 메시지를 반환합니다.

테이블의 현재 ID 값보다 큰 값을 삽입하면 SQL Server는 자동으로 새로 삽입한 값을 현재 ID 값으로 사용합니다.

SET IDENTITY_INSERT 옵션은 실행 시간 또는 런타임에 설정되며, 구문 분석 시에는 설정되지 않습니다.

사용자는 테이블을 소유하거나 테이블에 대한 ALTER 권한이 있어야 합니다.

다음 예에서는 ID 열이 있는 테이블을 만든 다음 SET IDENTITY_INSERT 설정을 사용하여 DELETE 문으로 인해 생긴 ID 값의 차이를 채우는 방법을 보여 줍니다.

USE AdventureWorks2012;
GO
-- Create tool table.
CREATE TABLE dbo.Tool(
   ID INT IDENTITY NOT NULL PRIMARY KEY, 
   Name VARCHAR(40) NOT NULL
)
GO
-- Inserting values into products table.
INSERT INTO dbo.Tool(Name) VALUES ('Screwdriver')
INSERT INTO dbo.Tool(Name) VALUES ('Hammer')
INSERT INTO dbo.Tool(Name) VALUES ('Saw')
INSERT INTO dbo.Tool(Name) VALUES ('Shovel')
GO

-- Create a gap in the identity values.
DELETE dbo.Tool 
WHERE Name = 'Saw'
GO

SELECT * 
FROM dbo.Tool
GO

-- Try to insert an explicit ID value of 3;
-- should return a warning.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO
-- SET IDENTITY_INSERT to ON.
SET IDENTITY_INSERT dbo.Tool ON
GO

-- Try to insert an explicit ID value of 3.
INSERT INTO dbo.Tool (ID, Name) VALUES (3, 'Garden shovel')
GO

SELECT * 
FROM dbo.Tool
GO
-- Drop products table.
DROP TABLE dbo.Tool
GO

커뮤니티 추가 항목

추가
표시: