โดยทั่วไปมีวิธีการบันทึก INSERT 2 วิธีที่แตกต่างกันโดยไม่มีข้อผิดพลาด:
1) เมื่อตั้งค่า IDENTITY_INSERT แล้ว รหัสหลัก"ID" จะต้องไม่ปรากฏในปัจจุบัน
2) เมื่อตั้งค่า IDENTITY_INSERT รหัส"คีย์" หลักจะต้องมีอยู่ในปัจจุบัน
ตามตัวอย่างต่อไปนี้จากตารางเดียวกันที่สร้างด้วยคีย์หลักตัวตน:
CREATE TABLE [dbo].[Persons] (
ID INT IDENTITY(1,1) PRIMARY KEY,
LastName VARCHAR(40) NOT NULL,
FirstName VARCHAR(40)
);
1) ในตัวอย่างแรกคุณสามารถแทรกระเบียนใหม่ลงในตารางโดยไม่ได้รับข้อผิดพลาดเมื่อ IDENTITY_INSERT ปิดอยู่ คีย์หลัก"รหัส" ต้องไม่เป็นปัจจุบันจาก "INSERT INTO" งบและค่า ID ที่ไม่ซ้ำกันจะถูกเพิ่มโดยอัตโนมัติ: หากมี ID จาก INSERT ในกรณีนี้คุณจะได้รับข้อผิดพลาด "ไม่สามารถแทรกค่าที่ชัดเจนสำหรับการระบุคอลัมน์ในตาราง ... "
SET IDENTITY_INSERT [dbo].[Persons] OFF;
INSERT INTO [dbo].[Persons] (FirstName,LastName)
VALUES ('JANE','DOE');
INSERT INTO Persons (FirstName,LastName)
VALUES ('JOE','BROWN');
ผลลัพธ์ของตาราง [dbo] [บุคคล] จะเป็น:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
2) ในตัวอย่างที่สองคุณสามารถแทรกระเบียนใหม่ลงในตารางโดยไม่ได้รับข้อผิดพลาดเมื่อ IDENTITY_INSERT เปิด คีย์หลัก"ID" ต้องแสดงอยู่ในคำสั่ง "INSERT INTO" ตราบใดที่ค่า ID ยังไม่มีอยู่ : หาก ID ไม่ได้อยู่ใน INSERT ในกรณีนี้คุณจะได้รับข้อผิดพลาด "ค่าที่ชัดเจนจะต้องเป็น ระบุไว้สำหรับตารางคอลัมน์ข้อมูลประจำตัว ... "
SET IDENTITY_INSERT [dbo].[Persons] ON;
INSERT INTO [dbo].[Persons] (ID,FirstName,LastName)
VALUES (5,'JOHN','WHITE');
INSERT INTO [dbo].[Persons] (ID,FirstName,LastName)
VALUES (3,'JACK','BLACK');
ผลลัพธ์ของตาราง [dbo] [บุคคล] จะเป็น:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
3 BLACK JACK
5 WHITE JOHN