Để 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 được chèn lần cuối 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 được chèn lần cuối 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 ⭐ ( 6216 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
Bài 06: Lấy ID vừa insert bằng PHP
- Tác giả: freetuts.net
- Đánh giá: 3 ⭐ ( 6095 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Cách sử dụng PHP để lấy ID khóa chính tăng tự động vừa insert, ba ví dụ cách lấy ID vừa insert bằng PHP, sử dụng thư viện MySQLi và PDO lấy khóa chính vừa.
Sửa các câu lệnh SQL để tinh chỉnh kết quả truy vấn
- Tác giả: support.microsoft.com
- Đánh giá: 4 ⭐ ( 9632 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Ở phía sau, các truy vấn Access sử dụng Ngôn ngữ Truy vấn Chuẩn (Standard Query Language, SQL) và trong một số trường hợp, bạn có thể sửa SQL để tinh chỉnh kết quả truy vấn.
PDO lấy ID cuối cùng được chèn
- Tác giả: vie.loveblade.org
- Đánh giá: 3 ⭐ ( 3403 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Tôi có một truy vấn và tôi muốn chèn ID cuối cùng. ID trường là khóa chính và tự động tăng dần. Tôi biết rằng tôi phải sử dụng câu lệnh này: LAST_INSERT_ID () Câu lệnh đó hoạt động với …
Làm cách nào để lấy hàng được chèn cuối cùng bằng CHÈN… CHỌN trong PostgreSQL?
- Tác giả: vi.gracebaptistbillings.org
- Đánh giá: 5 ⭐ ( 7420 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Tôi đang cố gắng sao chép hàng loạt dữ liệu theo một thứ tự cụ thể từ bảng này sang bảng khác trong PostgreSQL 12-beta2. Bảng không sử dụng chuỗi, nhưng chứa một Khóa chính duy nhất tổng hợp (user_id, object_i …
SQL: Làm cách nào để lấy id của các giá trị tôi vừa CHÈN?
- Tác giả: qastack.vn
- Đánh giá: 3 ⭐ ( 7589 lượt đánh giá )
- Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] @@IDENTITY không an toàn trong phạm vi và sẽ giúp bạn lấy lại id từ bảng…
Làm thế nào để lấy id được chèn lần cuối?
- Tác giả: helpex.vn
- Đánh giá: 4 ⭐ ( 2557 lượt đánh giá )
- Khớp với kết quả tìm kiếm: Tôi có mã này: string insertSql = “INSERT INTO aspnet_GameProfiles(UserId,GameId) VALUES(@UserId, @GameId)”; using (SqlConnection myConnection = new SqlConnection(myConnectionString)) {…
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