SET IDENTITY_INSERT (Transact-SQL)
Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics
Memungkinkan nilai eksplisit dimasukkan ke dalam kolom identitas tabel.
Sintaks
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
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 tool 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)