Để nhận giá trị được chèn danh tính cuối cùng trong máy chủ SQL. Nhiều chức năng và phương pháp được sử dụng để đạt được điều này. Điều khoản SCOPE_IDENTITY & OUTPUT được khuyến nghị.
Bạn đang xem : lấy id cuối cùng sql
Thuộc tính IDENTITY trong SQL Server tạo cột loại danh tính . Nó tạo giá trị tự động tăng trong bảng bằng cách xác định giá trị gốc và giá trị tăng dần, hoạt động giống như đối tượng SEQUENCE trong SQL Server và Oracle . Tuy nhiên, thuộc tính IDENTITY phụ thuộc vào bảng và đối tượng SEQUENCE hoạt động độc lập với bảng.
Thông thường, chúng tôi yêu cầu lấy giá trị được chèn danh tính cuối cùng trong máy chủ SQL . Nhiều chức năng và phương pháp được sử dụng để đạt được điều này.
- SCOPE_IDENTITY
- @@ BẢN SẮC
- IDENT_INSERT
- Điều khoản OUTPUT
Bài đăng này sẽ hướng dẫn bạn các cách khác nhau để nhận được giá trị được chèn danh tính cuối cùng. Giúp sử dụng phương pháp được khuyến nghị nhất để ngăn chặn việc phá mã cơ sở dữ liệu trong tương lai.
Dưới đây là các ví dụ khác nhau để lấy giá trị được chèn danh tính cuối cùng trong SQL Server. Trước tiên, hãy tạo bảng Học sinh và Sinh viên_History với cột ID là IDENTITY .
SỬ DỤNG tempdb;DROP
BẢNG
NẾUTỒN TẠI
Sinh viên;TẠO
BẢNG
Sinh viên ( ID INTIDENTITY
(1,1)CHÍNH
KEY
, Tên VARCHAR (255)KHÔNG
KHÔNG ĐẦY ĐỦ
, TINYINT tiêu chuẩn );ĐI
DROP
BẢNG
NẾUTỒN TẠI
Student_History;TẠO
BẢNG
Student_History ( ID INTIDENTITY
(1,1)CHÍNH
KEY
, Tên VARCHAR (255)KHÔNG
KHÔNG ĐẦY ĐỦ
, TINYINT tiêu chuẩn );ĐI
1
SCOPE_IDENTITY & amp; @@ Hàm IDENTITY trong SQL Server
SCOPE_IDENTITY là hàm được đề xuất nhiều nhất để nhận giá trị được chèn danh tính cuối cùng trong SQL Server. Nó sẽ trả về một giá trị trên cùng một phạm vi và cùng một phiên.
Hãy thực hiện một thao tác chèn đơn giản trên bảng Sinh viên và để nhận giá trị chèn danh tính cuối cùng.
sử dụng tempdb;ĐI
CHÈN
VÀO
Học sinhGIÁ TRỊ
('Subhash'
, 12);CHỌN
SCOPE_IDENTITY ()làm
ScopeIdentity;CHỌN
@@NHẬN DẠNG
thành
[@@NHẬN DIỆN
];CHỌN
*FROM
Sinh viên;ĐI
Kết quả như mong đợi. Chúng ta có thể thấy giá trị chính xác “1” được trả về bởi cả hai hàm.
Hãy Tạo trình kích hoạt sau để hiểu sự khác biệt giữa hàm SCOPE_IDENTITY và @@ IDENTITY trong SQL Server.
Sử dụng tempdb;ĐI
DROP
TRIGGER
IFTỒN TẠI
TRG_INSERT_Student_History;ĐI
TẠO
TRIGGER
TRG_INSERT_Student_HistoryBẬT
Sinh viênSAU KHI
CHÈN
NHƯ
BẮT ĐẦU
CHÈN
VÀO
Student_HistoryGIÁ TRỊ
('Kiểm tra'
, 10);HẾT
Trong truy vấn sau đây, chúng tôi đã thực hiện chèn trên bảng Sinh viên để kích hoạt trình kích hoạt TRG_INSERT_Student_History. Để chèn một hồ sơ kiểm tra trong bảng StudentHistory có cột nhận dạng ID.
Sử dụng tempdb;ĐI
CHÈN
VÀO
Học sinhGIÁ TRỊ
('Bhagat'
, 12);ĐI
/ * Giá trị nhận dạng "2" được mong đợi, cùng phạm vi và cùng phiên. * /
CHỌN
SCOPE_IDENTITY ()làm
LastIdentityValue;/ * Thay vì "2" Giá trị nhận dạng từ bảng Sinh viên, nó trả về "1" từ bảng Student_History xem xét bất kỳ phạm vi nào và bất kỳ phiên nào vì trình kích hoạt đã được kích hoạt Do câu lệnh chèn ở trên. * /
CHỌN
@@IDENTITY
làm
LastIdentityValue;
Trong ví dụ trên, mặc dù lần chèn Danh tính cuối cùng được thực hiện trên bảng StudentHistory thông qua một trình kích hoạt, các hàm SCOPE_IDENTITY trả về giá trị chính xác, tức là “2” từ bảng Student trong khi hàm @@ IDENTITY trả về “1” từ bảng StudentHistory xem xét bất kỳ phạm vi nào và cùng một phiên.
Do đó, bạn nên sử dụng hàm SCOPE_IDENTITY để nhận giá trị được chèn danh tính cuối cùng trong SQL Server nhằm tránh mọi xung đột về việc nhận giá trị nhận dạng từ bất kỳ phạm vi hoặc phiên nào khác nhau.
2.
IDENT_CURRENT (‘Tên bảng’) trong SQL Server
Sử dụng hàm IDENT_CURRENT để nhận giá trị được chèn nhận dạng cuối cùng của một bảng được chỉ định bất kể phạm vi hoặc phiên của nó. Nó có thể tiềm ẩn nguy hiểm nếu chúng tôi đã đưa ra câu lệnh INSERT và cố gắng lấy giá trị nhận dạng cuối cùng được tạo bởi câu lệnh INSERT, điều này có thể không đúng trong trường hợp một số phiên khác đã chạy câu lệnh INSERT trên cùng một bảng từ một phiên khác, do đó nó sẽ xem xét sau giá trị. Sử dụng điều này một cách thận trọng.
SỬ DỤNG tempdb;ĐI
CHÈN
VÀO
Học sinhCÁC GIÁ TRỊ
('Azad'
, 6);SELECT
IDENT_CURRENT ('Student'
)as
IdentCurrent;
3.
Điều khoản OUTPUT để nhận giá trị được chèn danh tính cuối cùng
Một cách khác được đề xuất để nhận giá trị nhận dạng là mệnh đề OUTPUT . Chúng tôi có thể nắm bắt nhiều giá trị nhận dạng bằng cách sử dụng mệnh đề OUTPUT, điều này không thể thực hiện được với hàm SCOPE_IDENTITY. Sử dụng điều này, chúng ta có thể lấy các giá trị được chèn lần cuối từ bảng ma thuật INSERTED.
Cần có biến bảng bổ sung để nắm bắt các giá trị và sử dụng chúng sau này. Chúng tôi không thể sử dụng các biến cục bộ để lưu trữ các giá trị mệnh đề OUTPUT.
SỬ DỤNG tempdb;ĐI
DECLARE
@StudentIdentValues BẢNG
( ID INT );CHÈN
VÀO
Sinh viênOUTPUT
insert.IDINTO
@StudentIdentValues (ID)GIÁ TRỊ
('Tilak'
, 10), ('Lakshmibai'
, 6);CHỌN
*TỪ
@StudentIdentValues;
Tóm tắt
Mệnh đề SCOPE_IDENTITY và OUTPUT là cách được khuyến nghị để nhận các giá trị được chèn danh tính cuối cùng trong SQL Server.
Bạn có thể đọc thêm bài đăng hữu ích về SQL Server từ các công thức kỹ thuật .
Vishwanath Dalvi là một kỹ sư tài năng và đam mê công nghệ. Anh ấy thích âm nhạc, ảo thuật, phim ảnh và chơi game. Khi không tấn công hay ủng hộ cộng đồng nguồn mở, anh ấy đang cố gắng vượt qua nỗi sợ chó của mình.
Xem thêm những thông tin liên quan đến chủ đề lấy id cuối cùng sql
return last insert id using stored procedure scope_identity c#4.6
- Tác giả: Haritha Computers & Technology
- Ngày đăng: 2018-11-29
- Đánh giá: 4 ⭐ ( 8900 lượt đánh giá )
- Khớp với kết quả tìm kiếm: storedprocedure returnidentityinsert asp.nettutorials
get last inserted row id after insert new record into database using stored procedure scope_identity() c asp.net
Lấy ID vừa insert bằng PHP
- Tác giả: hocphp.net
- Đánh giá: 3 ⭐ ( 7484 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Thông thường khi thiết kế CSDL cho các hệ thống website thì khóa chính ta hay sử dụng tăng tự động (auto_increment).
Chèn ID cuối cùng trong MySQL
- Tác giả: laptrinhvienphp.com
- Đánh giá: 4 ⭐ ( 2195 lượt đánh giá )
- Khớp với kết quả tìm kiếm: 3 cách lấy ID cuối cùng trong bảng CSDL MySQL để giúp cho cả người mới bắt đầu học lập trình PHP cũng có thể hiểu.
Lấy id cuối cùng sau khi insert dữ liệu dùng MySQL & C#
- Tác giả: code24h.com
- Đánh giá: 3 ⭐ ( 1917 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Viết ra các module thực hiện các tác vụ CRUD là công việc thường ngày của một lập trình viên. Trong quá trình chúng ta viết các module thực việc công việc insert dữ liệu vào một bảng dữ liệu A, chúng ta đôi khi muốn lấy cái id của record mà chúng ta vừa insert vào cơ sở dữ liệu để sử dụng vào một
Làm cách nào để lấy ID được chèn cuối cùng của bảng MySQL trong PHP?
- Tác giả: qastack.vn
- Đánh giá: 5 ⭐ ( 1291 lượt đánh giá )
- Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Nếu bạn đang sử dụng PDO, hãy sử dụng PDO::lastInsertId. Nếu bạn đang sử dụng Mysqli,…
Chi tiết bài học 07. Hàm LAST trong SQL
- Tác giả: www.vimentor.com
- Đánh giá: 5 ⭐ ( 5917 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Vimentor chi tiết bài học
Lấy ID bản ghi cuối cùng khi thêm mới dữ liệu trong SQL Server
- Tác giả: laptrinhdotnetaz.blogspot.com
- Đánh giá: 3 ⭐ ( 7279 lượt đánh giá )
- Khớp với kết quả tìm kiếm:
Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình