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 ”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
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 đó.