Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Server có đảm bảo việc chèn tuần tự cột nhận dạng không?

Được đảm bảo hoàn toàn trong bất kỳ trường hợp nào bạn có thể nhận được giá trị có thể nhỏ hơn hoặc bằng giá trị tối đa hiện tại? Không, không có gì đảm bảo như vậy. Điều đó nói rằng, các trường hợp mà kịch bản đó có thể xảy ra bị hạn chế:

  1. Ai đó vô hiệu hóa tính năng chèn danh tính và chèn một giá trị.
  2. Ai đó gửi lại cột danh tính.
  3. Ai đó thay đổi dấu hiệu của giá trị gia tăng (tức là thay vì +1, nó được thay đổi thành -1)

Giả sử không có trường hợp nào trong số này, bạn sẽ an toàn trước các điều kiện đua tạo ra tình huống trong đó giá trị tiếp theo thấp hơn giá trị hiện có. Điều đó nói rằng, không có gì đảm bảo rằng các hàng sẽ được cam kết theo thứ tự của các giá trị nhận dạng của họ. Ví dụ:

  1. Mở một giao dịch, chèn vào bảng của bạn một cột nhận dạng. Giả sử nó nhận giá trị 42.
  2. Chèn và cam kết vào cùng một bảng một giá trị khác. Giả sử nó nhận giá trị 43.

Cho đến khi giao dịch đầu tiên được cam kết, 43 tồn tại nhưng 42 thì không. Cột nhận dạng chỉ đơn giản là đặt trước một giá trị, nó không chỉ định thứ tự của các cam kết.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhiều cách khác nhau để sử dụng hàm ngày CHUYỂN ĐỔI trong SQL

  2. Tạo báo cáo từ URL - SQL Server Reporting Services 2008

  3. Làm thế nào để chuyển các tham số Table-Valued từ java sang thủ tục được lưu trữ trên máy chủ sql?

  4. Giới thiệu về Danh tính Máy chủ SQL

  5. Trung bình của các hàng được nhóm trong Sql Server