SET IDENTITY_INSERT (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Memungkinkan nilai eksplisit dimasukkan ke dalam kolom identitas tabel.

Konvensi sintaks transact-SQL

Sintaksis

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

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

database_name
Adalah nama database tempat tabel yang ditentukan berada.

schema_name
Adalah nama skema tempat tabel berada.

table_name
Adalah nama tabel dengan kolom identitas.

Keterangan

Kapan saja, hanya satu tabel dalam sesi yang dapat mengatur properti IDENTITY_INSERT ke AKTIF. Jika tabel sudah memiliki properti ini yang diatur ke AKTIF, dan pernyataan SET IDENTITY_INSERT ON dikeluarkan untuk tabel lain, SQL Server mengembalikan pesan kesalahan yang menyatakan SET IDENTITY_INSERT sudah AKTIF dan melaporkan tabel tempatnya diatur AKTIF.

Jika nilai yang disisipkan lebih besar dari nilai identitas saat ini untuk tabel, SQL Server secara otomatis menggunakan nilai baru yang disisipkan sebagai nilai identitas saat ini.

Pengaturan SET IDENTITY_INSERT diatur pada jalankan atau run time dan bukan pada waktu penguraian.

Izin

Pengguna harus memiliki tabel atau memiliki izin UBAH pada tabel.

Contoh

Contoh berikut membuat tabel dengan kolom identitas dan memperlihatkan bagaimana SET IDENTITY_INSERT pengaturan dapat digunakan untuk mengisi celah dalam nilai identitas yang DELETE disebabkan oleh pernyataan.

USE AdventureWorks2022;  
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 'AdventureWorks2022.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  

Lihat Juga

BUAT TABEL (Transact-SQL)
IDENTITY (Properti) (Transact-SQL)
SCOPE_IDENTITY (T-SQL)
INSERT (Transact-SQL)
Pernyataan SET (Transact-SQL)