Về cơ bản, có 2 cách khác nhau để ghi lại hồ sơ mà không gặp lỗi:
1) Khi IDENTITY_INSERT được đặt TẮT. "ID" CHÍNH HÃNG KHÔNG ĐƯỢC HIỆN TẠI
2) Khi IDENTITY_INSERT được đặt thành BẬT. "ID" CHÍNH HÃNG PHẢI HIỆN TẠI
Theo ví dụ sau từ cùng một Bảng được tạo với một KHÓA CHÍNH XÁC NHẬN:
CREATE TABLE [dbo].[Persons] (
ID INT IDENTITY(1,1) PRIMARY KEY,
LastName VARCHAR(40) NOT NULL,
FirstName VARCHAR(40)
);
1) Trong ví dụ đầu tiên, bạn có thể chèn các bản ghi mới vào bảng mà không gặp lỗi khi IDENTITY_INSERT TẮT. "ID" CHÍNH HÃNG KHÔNG ĐƯỢC HIỆN TẠI từ Tuyên bố "XÁC NHẬN VÀO" và một giá trị ID duy nhất sẽ được thêm tự động : . Nếu ID có mặt từ INSERT trong trường hợp này, bạn sẽ gặp lỗi "Không thể chèn giá trị rõ ràng cho cột xác định trong bảng ..."
SET IDENTITY_INSERT [dbo].[Persons] OFF;
INSERT INTO [dbo].[Persons] (FirstName,LastName)
VALUES ('JANE','DOE');
INSERT INTO Persons (FirstName,LastName)
VALUES ('JOE','BROWN');
ĐẦU RA BẢNG [dbo]. [Người] sẽ là:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
2) Trong ví dụ thứ hai, bạn có thể chèn các bản ghi mới vào bảng mà không gặp lỗi khi IDENTITY_INSERT được BẬT. ID "ID" CHÍNH HÃNG PHẢI ĐƯỢC HIỆN TẠI từ Tuyên bố "INSERT INTO" miễn là giá trị ID chưa tồn tại : Nếu ID KHÔNG xuất hiện từ INSERT trong trường hợp này, bạn sẽ nhận được lỗi "Giá trị rõ ràng phải là được chỉ định cho bảng cột nhận dạng ... "
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');
ĐẦU RA BẢNG [dbo]. [Người] sẽ là:
ID LastName FirstName
1 DOE Jane
2 BROWN JOE
3 BLACK JACK
5 WHITE JOHN