Thứ Ba, 26 tháng 5, 2015

SQL - Bài 8: Lấy giá trị cuối cùng trong cột đồng nhất

Từ bài học trước, chúng ta đã hiểu các giá trị của cột đồng nhất tự động được tạo. Có một số cách trong sql server, để lấy ra giá trị đồng nhất được tạo ra cuối cùng. Cách phổ biến nhất là sử dụng hàm  SCOPE_IDENTITY() đã biên dịch thành hàm.

Ngoài việc sử dụng SCOPE_IDENTITY() bạn cũng có thể sử dụng  biến toàn cục @@IDENTITY và hàm IDENT_CURRENT('TableName') 

Apart, from using SCOPE_IDENTITY(), you also have @@IDENTITY and IDENT_CURRENT('TableName') function. 

Ví dụ những truy vấn sau lấy ra giá trị cuối cùng của cột đồng nhất
Select SCOPE_IDENTITY()
Select @@IDENTITY
Select IDENT_CURRENT('tblPerson')

Bây giờ chúng ta cùng hiểu sự khác nhau giữa 3 cách tiếp cận:
@IDENTITY nếu trong table vừa insert vào có trigger thì nó sẽ trả về identity của bên table mà trigger tác động chứ không phải table bạn vừa Insert nhé
SCOPE_IDENTTY(): hàm có sẵn, trả về identity của table vừa Insert vào.
IDEN_CURRENT('table'): hàm có sẵn, cũng giống như SCOPE_IDENTITY() nhưng khác là không phụ thuộc vào session đang kết nối đến SQL Server.

Nguyên bản tiếng anh:
In brief:
SCOPE_IDENTITY() - returns the last identity value that is created in the same session and in the same scope.
@@IDENTITY - returns the last identity value that is created in the same session and across any scope.
IDENT_CURRENT('TableName') - returns the last identity value that is created for a specific table across any session and any scope.

Không có nhận xét nào:

Đăng nhận xét