CHÈN cột với bộ NHẬN DẠNG

Trang Cập Nhật :
Ngày tạo trang :

SQL Server có thuộc tính "IDENTITY" tự động đặt số tuần tự từ 1 thành một cột cụ thể khi bạn thêm bản ghi. Ví dụ: nếu bạn đặt IDENTITY trong cột A và thêm 3 bản ghi, cột A sẽ tự động được điền các giá trị 1, 2 và 3 theo thứ tự bạn đã thêm chúng.

Ngay cả khi bạn sử dụng câu lệnh INSERT, giá trị được đặt tự động, vì vậy không cần phải đặt giá trị rõ ràng, nhưng tôi nghĩ rằng có những trường hợp bạn muốn đặt giá trị rõ ràng vì nó được sử dụng cho khóa nước ngoài, v.v.

Ví dụ: giả sử có một bảng có thuộc tính "IDENTITY" được đặt trong cột "ID" như được hiển thị trong hình.

Một câu lệnh INSERT chèn một giá trị vào bảng này, bao gồm cột ID, sẽ trông như thế này:

insert into [テーブル名] ([ID], [Value]) values (1, 1)

Tuy nhiên, khi tôi cố gắng chạy nó, tôi nghĩ rằng lỗi sau đây sẽ xuất hiện.

Bột ngọt 544, Cấp 16, Tiểu bang 1, Dòng 1 Khi IDENTITY_INSERT được đặt thành TẮT, các giá trị rõ ràng không thể được chèn vào cột nhận dạng của bảng 'XXXXX'.

Các cột ban đầu được đặt thành IDENTITY được giả định là có các giá trị được đặt tự động, vì vậy bạn không thể đặt các giá trị một cách rõ ràng.

Nếu bạn thực sự muốn đặt nó, bạn cần đặt "IDENTITY_INSERT" thành "ON" như được mô tả trong thông báo lỗi. Bật IDENTITY_INSERT trước khi CHÈN và quay lại TẮT khi chèn hoàn tất, như trong SQL sau:

set identity_insert [テーブル名] on;
insert into [テーブル名] ([ID], [Value]) values (1, 1)
set identity_insert [テーブル名] off;

-- 確認
select * from [テーブル名];

Bây giờ bạn có thể đặt giá trị một cách rõ ràng và CHÈN nó. INSERT-SELECT sử dụng bảng cũng hợp lệ.

Các cột có ID được tự động gán các giá trị từ 1, nhưng nếu bạn đặt rõ ràng các giá trị như mô tả ở trên, bạn có thể tự hỏi số nào sẽ được gán tiếp theo. Trong trường hợp này, giá trị tiếp theo được gán từ số sau giá trị gia tăng cao nhất vào bảng, do đó không có giá trị trùng lặp khi chèn bản ghi mới. (Tuy nhiên, có những trường hợp ngoại lệ do khuyết tật, v.v.)