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

SQL Server - Cách tốt nhất để lấy danh tính của hàng được chèn?

  • @@IDENTITY trả về giá trị nhận dạng cuối cùng được tạo cho bất kỳ bảng nào trong phiên hiện tại, trên tất cả các phạm vi. Bạn cần phải cẩn thận ở đây , vì nó trên nhiều phạm vi. Bạn có thể nhận được một giá trị từ trình kích hoạt, thay vì câu lệnh hiện tại của bạn.

  • SCOPE_IDENTITY() trả về giá trị nhận dạng cuối cùng được tạo cho bất kỳ bảng nào trong phiên hiện tại và phạm vi hiện tại. Nói chung là những gì bạn muốn sử dụng .

  • IDENT_CURRENT('tableName') trả về giá trị nhận dạng cuối cùng được tạo cho một bảng cụ thể trong bất kỳ phiên nào và bất kỳ phạm vi nào. Điều này cho phép bạn chỉ định bảng bạn muốn giá trị từ đó, trong trường hợp hai bảng trên không hoàn toàn là thứ bạn cần ( rất hiếm ). Ngoài ra, như @Guy Starbuck đã đề cập, "Bạn có thể sử dụng điều này nếu bạn muốn nhận giá trị IDENTITY hiện tại cho bảng mà bạn chưa chèn bản ghi vào."

  • OUTPUT mệnh đề của INSERT câu lệnh sẽ cho phép bạn truy cập mọi hàng đã được chèn qua câu lệnh đó. Vì nó nằm trong phạm vi tuyên bố cụ thể, nó đơn giản hơn hơn các chức năng khác ở trên. Tuy nhiên, nó hơi dài dòng hơn một chút (bạn sẽ cần phải chèn vào một biến bảng / bảng tạm thời và sau đó truy vấn nó) và nó cho kết quả ngay cả trong trường hợp lỗi khi câu lệnh được cuộn lại. Điều đó nói rằng, nếu truy vấn của bạn sử dụng kế hoạch thực thi song song, thì đây là phương pháp được đảm bảo duy nhất để nhận được danh tính (ngắn gọn của việc tắt chế độ song song). Tuy nhiên, nó được thực thi trước khi trình kích hoạt và không thể được sử dụng để trả về các giá trị do trình kích hoạt tạo.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 9 mẹo hàng đầu để thiết lập cụm máy chủ SQL của bạn

  2. Cách chèn giá trị vào cột IDENTITY trong SQL Server

  3. Gói SSIS không muốn tìm nạp siêu dữ liệu của bảng tạm thời

  4. SQL Server:Tìm ra giá trị mặc định của một cột bằng một truy vấn

  5. Cách tạo kế hoạch thực thi trong SQL Server