SET IDENTITY_INSERT (Transact-SQL)

Bir tablonun kimlik sütununa açık değerler eklenmesine izin verir.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

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

Bağımsız değişkenler

  • database_name
    Belirtilen tablonun durduğu veritabanının adıdır.

  • schema_name
    Tablonun ait olduğu şemanın adıdır.

  • table
    Bir kimlik sütunu olan bir tablonun adıdır.

Açıklamalar

Herhangi bir anda bir oturumda yalnızca bir tek tablonun IDENTITY_INSERT özelliği ON olabilir. Bir tablonun özelliği zaten ON olarak ayarlıysa ve başka bir tablo için SET IDENTITY_INSERT ON deyimi çalıştırılırsa, SQL Server, SET IDENTITY_INSERT ayarının zaten ON olduğunu bildiren bir hata iletisi döndürür ve bu değerin ON olduğu tablonun adını rapor eder.

Eklenen değer tablonun geçerli kimlik değerinden daha büyükse, SQL Server, yeni eklenen değeri otomatik olarak geçerli kimlik değeri olarak kullanır.

SET IDENTITY_INSERT ayarı, ayrıştırma zamanında değil yürütme veya çalıştırma zamanında açılır.

İzinler

Kullanıcının tablonun sahibi olması veya tabloda ALTER iznine sahip olması gerekir.

Örnekler

Aşağıdaki örnek kimlik sütunu olan bir tablo oluşturur ve SET IDENTITY_INSERT deyiminin kimlik değerlerinde DELETE deyiminin neden olduğu bir boşluğu doldurmak için nasıl kullanılabileceğini gösterir.

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

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

Ayrıca bkz.

Başvuru

Tablo (Transact-sql) oluştur

IDENTITY (Özellik) (Transact-SQL)

SCOPE_IDENTITY (Transact-SQL)

Insert (Transact-sql)

Deyimiyle (Transact-sql) bırak