News Ticker

Menu

Lấy ID bản ghi cuối cùng khi thêm mới dữ liệu trong SQL Server

(How To Get Last Inserted ID On SQL Server) - Có nhiều cách để tạo sinh tự động cho 1 bản ghi trong SQL Server, và việc sử dụng ID của bản ghi cuối cùng trong 1 bảng cũng được các lập trình viên sử dụng. Đây là một cách xử lý đơn giản, chỉ cần ghép ID cuối cùng với các thông tin khác là chúng ta đã có một bản mã hoàn chỉnh mà hoàn toàn không lo bị trùng. Và để làm được việc này, yêu cầu khi tạo bảng phải để trường ID là số và thiết lập kiểu auto increment column. Có rất nhiều cách để lấy ID của bản ghi cuối cùng khi thêm mới và dưới đây là các lựa chọn.

Xem những Video hay dành cho thiếu nhi - Nghe trên Youtube



- @@IDENTITY: Trả về giá trị Identity cuối cùng được tạo bởi SQL Server của 1 Table trong phiên làm việc hiện tại. 

- SCOPE_IDENTITY: cũng trả về giá trị Identity cuối cùng được tạo bởi SQL Server của 1 Table trong phiên làm việc hiện tại. 

Vậy đâu là sự khác nhau giữa @@IDENTITY và SCOPE_IDENTITY?  Ví dụ bạn thêm 1 bản ghi vào bảng Products và có 1 trigger tự động thêm bản ghi vào bảng ProductHistory, nếu dùng @@IDENTITY, bạn sẽ nhận được giá trị cuối cùng của cột Identity của bảng ProductHistory, còn với SCOPE_IDENTITY nó sẽ trả về giá trị cuối cùng của cột Identity của bảng Products.

- IDENT_CURRENT: Trả về giá trị Identity cuối cùng được tạo bởi SQL Server của 1 Table, khi dùng IDENT_CURRENT ta phải cung cấp tham số là tên Table. Khi sử dụng IDENT_CURRENT nó không phụ thuộc vào session đang kết nối đến SQL Server.

- Sử dụng câu lệnh : SELECT TOP 1 hoặc câu lệnh SELECT MAX

Dưới đây là ví dụ

- B1: Tạo Table Products có cấu trúc

STTTên trườngKiểu trườngGhi chú
1ProductIDIntTrường tự tăng
2ProductCodenvarchar(150)
3ProductNamenvarchar(250)
4Descriptionntext
5UnitPricemoney

- B2: Thực hiện

+ Sử dụng @@IDENTITY

INSERT INTO  Products (ProductCode, ProductName, Description, UnitPrice)
VALUES ('PR003', 'Chang', '', 180000)
SELECT @@IDENTITY as LastID

+ Sử dụng  SCOPE_IDENTITY

INSERT INTO  Products (ProductCode, ProductName, Description, UnitPrice)
VALUES ('PR002', 'Chang', '', 180000)
SELECT SCOPE_IDENTITY() as LastID

+ Sử dụng  IDENT_CURRENT

INSERT INTO  Products (ProductCode, ProductName, Description, UnitPrice)
VALUES ('PR003', 'Chang', '', 180000)
SELECT IDENT_CURRENT('Products') as LastID

+  Câu lệnh SELECT TOP 1

INSERT INTO  Products (ProductCode, ProductName, Description, UnitPrice)
VALUES ('PR003', 'Chang', '', 180000)
SELECT TOP 1 ProductID as LastID FROM Products ORDER BY ProductID DESC

+ Câu lệnh SELECT MAX

INSERT INTO  Products (ProductCode, ProductName, Description, UnitPrice)
VALUES ('PR003', 'Chang', '', 180000)
SELECT Max(ProductID) as LastID FROM Products

Trên đây là toàn bộ các cách để lấy ID cuối cùng trong bảng khi thêm mới bản ghi, tùy vào từng trường hợp bạn bạn có thể lựa chọn cách sử dụng cho phù hợp.

Chúc các bạn thành công!

Quang Bình

Share This:

Post Tags:

Mỗi bài viết đều là công sức và thời gian của tác giả ví vậy tác giả chỉ có một mong muốn duy nhất nếu ai đó có Copy thì xin hãy ghi rõ nguồn và thông tin tác giả ở cuối mỗi bài viết.
Xin cảm ơn!

No Comment to " Lấy ID bản ghi cuối cùng khi thêm mới dữ liệu trong SQL Server "

  • To add an Emoticons Show Icons
  • To add code Use [pre]code here[/pre]
  • To add an Image Use [img]IMAGE-URL-HERE[/img]
  • To add Youtube video just paste a video link like http://www.youtube.com/watch?v=0x_gnfpL3RM