Aracılığıyla paylaş


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ı

Tablonun kimlik sütununa açık değerlerin eklenmesine izin verir.

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

Tablonun ait olduğu ş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. Bir tabloda bu özellik zaten ONolarak ayarlanmışsa ve başka bir tablo için bir SET IDENTITY_INSERT ON deyimi verilmişse, SQL Server SET IDENTITY_INSERT zaten ONolduğunu bildiren bir hata iletisi döndürür ve ON ayarlandığı tabloyu bildirir.

Eklenen değer tablonun geçerli kimlik değerinden büyükse, SQL Server otomatik olarak yeni eklenen değeri geçerli 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

Kullanıcının tabloya sahip olması veya tabloda ALTER izni olması gerekir.

Ö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 kodu aşağıdaki hatayı döndürmelidir:

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