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 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
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