Để 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 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.

Lấy giá trị tạo danh tính cuối cùng Máy chủ SQL - Công thức nấu ăn
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ẾU

TỒN TẠI

Sinh viên;

TẠO

BẢNG

Sinh viên ( ID INT

IDENTITY

(1,1)

CHÍNH

KEY

, Tên VARCHAR (255)

KHÔNG

KHÔNG ĐẦY ĐỦ

, TINYINT tiêu chuẩn );

ĐI

DROP

BẢNG

NẾU

TỒN TẠI

Student_History;

TẠO

BẢNG

Student_History ( ID INT

IDENTITY

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

GIÁ 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

SCOPE_IDENTITY - Nhận Giá trị Nhận dạng Cuối cùng được Tạo ra từ Máy chủ SQL

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

IF

TỒN TẠI

TRG_INSERT_Student_History;

ĐI

TẠO

TRIGGER

TRG_INSERT_Student_History

BẬT

Sinh viên

SAU KHI

CHÈN

NHƯ

BẮT ĐẦU

CHÈN

VÀO

Student_History

GIÁ 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 sinh

GIÁ 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 sinh

CÁ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ên

OUTPUT

insert.ID

INTO

@StudentIdentValues ​​(ID)

GIÁ TRỊ

(

'Tilak'

, 10), (

'Lakshmibai'

, 6);

CHỌN

*

TỪ

@StudentIdentValues;

Mệnh đề OUTPUT - Lấy Giá trị Nhận dạng Cuối cùng được Tạo ra từ Máy chủ SQL

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

alt

  • 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

Xem Thêm  LinkedList trong Java - lớp danh sách liên kết trong java

By ads_php