Để 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 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 được chèn lần cuối 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 ⭐ ( 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

Xem Thêm  Bắt đầu ASP.NET bằng VB.NET - hướng dẫn asp net vb

By ads_php