set IDENTITY_INSERT (Transact-SQL)
Kimlik sütun bir tabloeklenecek açık değerler verir.
Sözdizimi
SET IDENTITY_INSERT [ database_name . [ schema_name ] . ] table { ON | OFF }
Bağımsız değişkenler
database_name
Belirtilen tablo içinde bulunduğu veritabanı adıdır.schema_name
tablo ait olduğu şema addır.table
Kimlik sütunolan bir tablo adıdır.
Açıklamalar
Her saatyalnızca bir tablo bir oturum IDENTITY_INSERT özellik küme açık olabilir.Bu özellikküme için on bir tablo zaten varsa ve başka bir tabloiçin bir set IDENTITY_INSERT on deyim verilen SQL Server set IDENTITY_INSERT zaten açık ve tablo küme on for. olduğu raporlar bildiren bir hata iletisi döndürüyor
Eklenen değer tabloiçin geçerli kimlik değerden daha büyükse, SQL Server Yeni eklenen değer olarak'otomatik olarak kullanırgeçerli kimlik değeri.
set IDENTITY_INSERT ayarı yürütmek sırasında küme veya çalışma saat ve ayrıştırma saatzaman.
İzinler
Kullanıcı, tablo sahibi veya tabloüzerinde alter iznine sahip.
Örnekler
Aşağıdaki örnek, kimlik sütun bir tablo oluşturur ve gösterir nasıl SET IDENTITY_INSERT ayarı, bir boşluğa neden kimlik değerlerini doldurmak için kullanılabilir bir DELETEdeyim.
USE AdventureWorks2008R2;
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