Khóa chính có thể cho phép 0 tùy thuộc vào khóa học trên kiểu dữ liệu của khóa chính. Một PK tự nhận dạng (Identity) có thể bắt đầu ở 0 nhưng đó không phải là hành vi mặc định, bạn sẽ phải thiết lập nó để bắt đầu ở 0 (heck bạn có thể bắt đầu với số âm nếu bạn muốn). Để có kết quả tốt nhất, điều này nên được thực hiện trước khi bạn bắt đầu nhập dữ liệu vào bảng.
Điều bạn không thể làm là có nhiều bản ghi với số 0 là PK vì vi phạm yêu cầu duy nhất của PK.
Nếu bạn có dữ liệu hiện có và muốn bản ghi có giá trị bằng 0 cho mục đích cụ thể (ví dụ: chúng tôi đặt người dùng cho quá trình nhập của mình, do đó trường chèn vào có thể hiển thị bản ghi đến từ quá trình nhập) , thì điều bạn có thể muốn là cho phép chèn thủ công vào trường nhận dạng, vì vậy bạn có thể nhập bản ghi cụ thể này theo giá trị bạn muốn, sau đó quay lại cài đặt thông thường. Này được thực hiện theo cách này:
set Identity_insert dbo.table1 ON
insert dbo.table1 (id, myfield)
Values (0, 'test')
set Identity_insert dbo.table1 OFF
Đừng làm điều này trong mã sản xuất ứng dụng, đây là một loại hệ thống quản trị của nhiệm vụ mà chỉ nên được thực hiện thường xuyên cho một trong hai các thiết lập của một kỷ lục đặc biệt ngoài phạm vi bình thường dữ liệu hoặc để chèn các bản ghi chuyển từ một nguồn khác (khi bạn biết các giá trị id hiện tại của chúng hiện chưa được sử dụng). Điều này không nên được sử dụng một cách nhẹ nhàng để tránh những hạn chế của một lĩnh vực nhận dạng. Đặc biệt nó không bao giờ được sử dụng để điền vào các bản ghi mà danh tính bị bỏ qua (do xóa hoặc khôi phục) vì điều này đánh bại mục đích sử dụng danh tính và có thể gây ra vấn đề toàn vẹn dữ liệu nếu các mối quan hệ PK/FK thích hợp không được thiết lập.
chỉ là một nhận xét thông tin. câu hỏi này cũng có thể áp dụng cho 'mySql' – dhpratik