SET IDENTITY_INSERT (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'de Azure Synapse AnalyticsSQL veritabanı

Bu ifadeyi kullanarak, bir tablonun sütununa açık değerler IDENTITY ekleyebilirsiniz.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Bağımsız değişken

database_name

Belirtilen tablonun bulunduğu veritabanının adı.

schema_name

Tabloyu içeren şemanın adı.

table_name

Kimlik sütunu olan bir tablonun adı.

Açıklamalar

Herhangi bir zamanda, oturumdaki yalnızca bir tabloda IDENTITY_INSERT özelliği ONolarak ayarlanabilir. Eğer bir tabloda bu özellik ONzaten , olarak ayarlanmışsa ve başka bir tablo için bir SET IDENTITY_INSERT ON ifade çıkarırsanız, SQL Server zaten 'olduğunu ONbelirten bir hata mesajı SET IDENTITY_INSERT verir ve hangi tablonun ON ayarlandığını bildirir.

  • FonksiyonunIDENTITY argümanı increment pozitif olduğunda ve eklenen değer tablonun mevcut kimlik değerinden büyük olduğunda, SQL Database Engine otomatik olarak yeni eklenen değeri mevcut kimlik değeri olarak kullanır.
  • increment FonksiyonunIDENTITY argümanı negatif olduğunda ve eklenen değer tablonun mevcut kimlik değerinden küçükse, SQL Server otomatik olarak yeni eklenen değeri mevcut kimlik değeri olarak kullanır.

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

İzinler

Masaya sahip olmalısın ya da masada izin almalısın ALTER .

Örnekler

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

USE AdventureWorks2022;
GO

Araç tablosu oluşturma.

CREATE TABLE dbo.Tool
(
    ID INT IDENTITY NOT NULL PRIMARY KEY,
    Name VARCHAR (40) NOT NULL
);
GO

Ürünler tablosuna değer ekleyin.

INSERT INTO dbo.Tool (Name)
VALUES ('Screwdriver'),
    ('Hammer'),
    ('Saw'),
    ('Shovel');
GO

Kimlik değerlerinde boşluk oluşturun.

DELETE dbo.Tool
WHERE Name = 'Saw';
GO

SELECT *
FROM dbo.Tool;
GO

3 açık kimlik değeri eklemeyi deneyin.

INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO

Önceki INSERT kod aşağıdaki hatayı döndürür:

An explicit value for the identity column in table 'AdventureWorks2022.dbo.Tool' can only be specified when a column list is used and IDENTITY_INSERT is ON.

IDENTITY_INSERT ONolarak ayarlayın.

SET IDENTITY_INSERT dbo.Tool ON;
GO

3 açık kimlik değeri eklemeyi deneyin.

INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO

SELECT *
FROM dbo.Tool;
GO

Araç tablosunu bırakma.

DROP TABLE dbo.Tool;
GO