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

적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database 예Azure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance 예Azure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics

명시적 값을 테이블의 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_name { ON | OFF }  

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

인수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.

table_nametable_name
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.

사용 권한Permissions

사용자는 테이블을 소유하거나 테이블에 대한 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 an error:
-- An explicit value for the identity column in table 'AdventureWorks2012.dbo.Tool' can only be specified when a column list is used and IDENTITY_INSERT is ON.
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)