(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.

Nghe những bài hát đỉnh nhất về Thấy cô giáo - 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 asLastID

+ 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 asLastID FROM Products ORDERBY 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

1 comments Blogger 1 Facebook

  1. Lấy Id Bản Ghi Cuối Cùng Khi Thêm Mới Dữ Liệu Trong Sql Server
    -
    Lập Trình Đốt Nét >>>>> Download Now

    >>>>> Download Full

    Lấy Id Bản Ghi Cuối Cùng Khi Thêm Mới Dữ Liệu Trong Sql Server
    -
    Lập Trình Đốt Nét >>>>> Download LINK

    >>>>> Download Now

    Lấy Id Bản Ghi Cuối Cùng Khi Thêm Mới Dữ Liệu Trong Sql Server
    -
    Lập Trình Đốt Nét >>>>> Download Full

    >>>>> Download LINK

    ReplyDelete

 
lập trình đốt nét © 2013. All Rights Reserved. Powered by Blogger
Top