SET IDENTITY_INSERT(Transact-SQL)SET IDENTITY_INSERT (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

명시적 값을 테이블의 ID 열에 삽입할 수 있도록 합니다.Allows explicit values to be inserted into the identity column of a table.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax


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

인수Arguments

database_namedatabase_name
지정한 테이블이 있는 데이터베이스의 이름입니다.Is the name of the database in which the specified table resides.

schema_nameschema_name
테이블이 속한 스키마의 이름입니다.Is the name of the schema to which the table belongs.

tabletable
ID 열이 있는 테이블의 이름입니다.Is the name of a table with an identity column.

주의Remarks

언제든지 세션에서 한 테이블의 IDENTITY_INSERT 속성만 ON으로 설정할 수 있습니다.At any time, only one table in a session can have the IDENTITY_INSERT property set to ON. 한 테이블에 이 속성이 ON으로 설정되어 있는데 다른 테이블에 대해 SET IDENTITY_INSERT ON 문을 실행하면 SQL ServerSQL Server는 SET IDENTITY_INSERT가 이미 ON으로 설정되어 있음을 알리고 ON으로 설정된 테이블을 보고하는 오류 메시지를 반환합니다.If a table already has this property set to ON, and a SET IDENTITY_INSERT ON statement is issued for another table, SQL ServerSQL Server returns an error message that states SET IDENTITY_INSERT is already ON and reports the table it is set ON for.

테이블의 현재 ID 값보다 큰 값을 삽입하면 SQL ServerSQL Server는 자동으로 새로 삽입한 값을 현재 ID 값으로 사용합니다.If the value inserted is larger than the current identity value for the table, SQL ServerSQL Server automatically uses the new inserted value as the current identity value.

SET IDENTITY_INSERT 옵션은 실행 시간 또는 런타임에 설정되며, 구문 분석 시에는 설정되지 않습니다.The setting of SET IDENTITY_INSERT is set at execute or run time and not at parse time.

PermissionsPermissions

사용자는 테이블을 소유하거나 테이블에 대한 ALTER 권한이 있어야 합니다.User must own the table or have ALTER permission on the table.

Examples

다음 예에서는 ID 열이 있는 테이블을 만든 다음 SET IDENTITY_INSERT 설정을 사용하여 DELETE 문으로 인해 생긴 ID 값의 차이를 채우는 방법을 보여 줍니다.The following example creates a table with an identity column and shows how the SET IDENTITY_INSERT setting can be used to fill a gap in the identity values caused by a DELETE statement.

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')  
        , ('Hammer')  
        , ('Saw')  
        , ('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  

관련 항목:See Also

CREATE TABLE(Transact-SQL) CREATE TABLE (Transact-SQL)
IDENTITY(속성)(Transact-SQL) IDENTITY (Property) (Transact-SQL)
SCOPE_IDENTITY ( Transact SQL ) SCOPE_IDENTITY (Transact-SQL)
INSERT(Transact-SQL) INSERT (Transact-SQL)
SET 문(Transact-SQL)SET Statements (Transact-SQL)