Bạn đang mắc phải sai lầm phổ biến khi giả định một thứ tự trong bảng. Bàn không có thứ tự. Chỉ những kết quả mới có thứ tự, không được xác định trừ khi một ORDER BY rõ ràng được chỉ định.
Bạn có thể hỏi một câu hỏi khác:giá trị được tạo danh tính được gán như thế nào trong trường hợp chèn đồng thời? Câu trả lời rất đơn giản: không quan trọng . Và nếu bạn đưa ra bất kỳ giả định nào về đơn hàng thì mã của bạn bị hỏng. Tương tự đối với các khoảng trống. Ứng dụng của bạn sẽ hoạt động ngay cả khi danh tính được tạo hoàn toàn ngẫu nhiên và ứng dụng được viết chính xác sẽ làm việc nếu danh tính là hoàn toàn ngẫu nhiên. Sử dụng SCOPE_IDENTITY()
để truy xuất danh tính được chèn cuối cùng. Vẫn tốt hơn, hãy sử dụng OUTPUT
mệnh đề của INSERT
, nó cũng hoạt động cho chèn nhiều hàng.
Đối với bản ghi:danh tính được tạo theo thứ tự mà các hoạt động có được quyền truy cập vào luồng nhật ký .