Cách khắc phục lỗi "Không thể chèn giá trị rõ ràng cho cột nhận dạng trong bảng khi IDENTITY_INSERT được đặt thành TẮT"?

Cột khóa chính thường được đặt thành tự động tăng khi xây dựng cơ sở dữ liệu SQL Server. Giới hạn IDENTITY được bật cho cột khóa chính để thực hiện việc này. Vị trí bắt đầu và bước tăng dần được chuyển sang cột IDENTITY dưới dạng các tham số. Sau đó, bất cứ khi nào một bản ghi mới được thêm vào và phần chèn danh tính được đặt thành TẮT, giá trị của cột IDENTITY sẽ được tăng lên theo bước được xác định trước thường là một số. Hơn nữa, thuộc tính IDENTITY INSERT chỉ được đặt thành BẬT cho một bảng trong một phiên duy nhất.

Trong bài viết này, chúng ta sẽ thảo luận về lỗi “Không thể chèn giá trị rõ ràng cho cột nhận dạng trong bảng

khi IDENTITY_INSERT được đặt thành TẮT ”
như hình bên dưới.

Lỗi phát sinh khi người dùng đã đặt “ID_insert” thành “TẮT”. Sau đó, cố gắng chèn dữ liệu vào cột khóa chính của bảng một cách rõ ràng. Điều này có thể được giải thích bằng cách sử dụng ví dụ dưới đây.

Cơ sở dữ liệu và tạo bảng:

Đầu tiên, tạo một cơ sở dữ liệu có tên là “appuals”.

Tạo một bảng có tên “người” bằng cách sử dụng mã sau. Bảng được xây dựng bằng cách sử dụng “NHẬN DẠNG CHÍNH CHÍNH”

TẠO người trong BẢNG (ID INT IDENTITY (1, 1), first_name VARCHAR (MAX), last_name VARCHAR (MAX))

Cú pháp để thiết lập “Ident_insert off | trên":

Các “Thiết lập nhận dạng_tắt | trên" sẽ giúp chúng tôi giải quyết lỗi này. Cú pháp chính xác cho câu lệnh này như dưới đây.

ĐẶT IDENTITY_INSERT  . .  {TẮT | TRÊN }

Trong khi đối số đầu tiên là tên của cơ sở dữ liệu mà bảng được đặt trong đó. Đối số thứ hai hiển thị là lược đồ mà bảng đó thuộc về có giá trị nhận dạng phải được đặt thành TRÊN hoặc là TẮT. Đối số thứ ba

là bảng có cột nhận dạng.

Về cơ bản, có hai cách khác nhau để chèn dữ liệu vào bảng mà không bị lỗi. Đây được coi là giải pháp cho lỗi này và được thảo luận dưới đây.

Lỗi 1: Đặt ID_insert TẮT

Trong trường hợp đầu tiên, chúng tôi sẽ chèn dữ liệu vào bảng với “CHÈN NHẬN DẠNG” đặt thành "TẮT". Vì vậy, nếu ID có trong câu lệnh INSERT, bạn sẽ gặp lỗi “Không thể chèn giá trị rõ ràng cho cột nhận dạng trong bảng‘ người ’khi IDENTITY_INSERT được đặt thành TẮT”.

Thực thi đoạn mã sau trong tab truy vấn.

 thiết lập danh_sách_điểm tắt người; chèn vào người (ID, first_name, last_name) giá trị (3, 'Sadia', 'Majeed'), (4, 'Michel', 'Ronald')

Đầu ra sẽ như thế này.

Giải pháp:

Khi chuyển “TẮT CHÈN IDENTITY”, các“ID KHÓA CHÍNH” KHÔNG ĐƯỢC HIỆN TẠI trong câu lệnh chèn

Bây giờ hãy thực thi đoạn mã sau trong tab truy vấn

 thiết lập danh_sách_điểm tắt người; chèn vào giá trị người (first_name, last_name) ('Sadia', 'Majeed'), ('Michel', 'Ronald')

Thao tác này sẽ chèn dữ liệu vào bảng mà không xảy ra lỗi. Hơn nữa, người dùng không cần phải chèn ID KHÓA CHÍNH, thay vào đó nó sẽ tự động thêm giá trị ID duy nhất như trong hình bên dưới.

Lỗi 2: BẬT ID_insert

Trong trường hợp thứ hai, chúng tôi sẽ chèn dữ liệu vào bảng với “CHÈN NHẬN DẠNG” đặt thành "TRÊN". Vì vậy, nếu ID không có trong câu lệnh INSERT, bạn sẽ gặp lỗi ”Bản tin 545, Mức 16, Trạng thái 1, Dòng 17. Giá trị rõ ràng phải được chỉ định cho cột nhận dạng trong bảng‘ người ’khi IDENTITY_INSERT được đặt thành BẬT hoặc khi người dùng sao chép đang chèn vào cột danh tính KHÔNG CHO THAY THẾ”.

Giải pháp:

Khi chuyển“BẬT CHÈN IDENTITY” các "KHÓA CHÍNH TÔI" phải có trong câu lệnh chèn.

Thực thi mã sau trong tab truy vấn

 đặt danh tính_chèn người vào; chèn vào người (ID, first_name, last_name) các giá trị (5, 'Jack', 'black'), (6, 'john', 'Wicky')

Thao tác này sẽ chèn dữ liệu vào bảng mà không xảy ra lỗi. Do đó ID KHÓA CHÍNH được yêu cầu rõ ràng bởi người dùng. Ngoài ra, nó sẽ không tự động thêm giá trị ID duy nhất như trong hình bên dưới.

Nếu bạn "ĐẶT CHÈN NHẬN DIỆN BẬT ”, nó sẽ vẫn hoạt động trong cả phiên. Vì vậy, bạn có thể thêm bao nhiêu bản ghi tùy thích khi điều này đã được thiết lập. Điều này cũng chỉ đề cập đến phiên mà nó được kích hoạt. Vì vậy, nếu bạn mở một tab truy vấn khác, bạn cần phải chuyển nó TRÊN một lần nữa cho cửa sổ truy vấn đó.

Facebook Twitter Google Plus Pinterest