Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL database di Microsoft Fabric
Memungkinkan nilai eksplisit dimasukkan ke dalam kolom identitas tabel.
Sintaks
SET IDENTITY_INSERT [ [ database_name . ] schema_name . ] table_name { ON | OFF }
Argumen
database_name
Nama database tempat tabel yang ditentukan berada.
schema_name
Nama skema tempat tabel berada.
table_name
Nama tabel dengan kolom identitas.
Keterangan
Kapan saja, hanya satu tabel dalam sesi yang dapat mengatur properti IDENTITY_INSERT ke ON. Jika tabel sudah memiliki properti ini yang diatur ke ON, dan pernyataan SET IDENTITY_INSERT ON dikeluarkan untuk tabel lain, SQL Server mengembalikan pesan kesalahan yang menyatakan SET IDENTITY_INSERT sudah ON, dan melaporkan tabel yang ON diatur.
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 waktu eksekusi atau run time dan bukan pada waktu penguraian.
Izin
Pengguna harus memiliki tabel atau memiliki izin ALTER 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
Buat tabel alat.
CREATE TABLE dbo.Tool
(
ID INT IDENTITY NOT NULL PRIMARY KEY,
Name VARCHAR (40) NOT NULL
);
GO
Sisipkan nilai ke dalam tabel produk.
INSERT INTO dbo.Tool (Name)
VALUES ('Screwdriver'),
('Hammer'),
('Saw'),
('Shovel');
GO
Buat celah dalam nilai identitas.
DELETE dbo.Tool
WHERE Name = 'Saw';
GO
SELECT *
FROM dbo.Tool;
GO
Cobalah untuk menyisipkan nilai ID eksplisit 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
Kode INSERT sebelumnya harus mengembalikan kesalahan berikut:
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.
Atur IDENTITY_INSERT ke ON.
SET IDENTITY_INSERT dbo.Tool ON;
GO
Cobalah untuk menyisipkan nilai ID eksplisit 3.
INSERT INTO dbo.Tool (ID, Name)
VALUES (3, 'Garden shovel');
GO
SELECT *
FROM dbo.Tool;
GO
Letakkan tabel alat.
DROP TABLE dbo.Tool;
GO