簡體   English   中英

SQL SERVER 2008獲得最后的插入值

[英]SQL SERVER 2008 GET LAST INSERTED VALUES

這是我的桌子。

Ticket(id int auto_increment,name varchar(50));

插入此表后,我希望發送id和郵件名稱..如何獲取最后一個Inserted值。

有助於解決這個問題......

請看: Scope_identity

SCOPE_IDENTITY()

從該表中獲取標識屬性的表我們可以得到最后插入的記錄ID將是這樣的

SELECT SCOPE_IDENTITY()

要么

但這不是一種安全的技術:

SELECT MAX(Id) FROM Ticket

要么

這也不是一種安全的技術:

SELECT TOP 1 Id FROM Ticket ORDER BY Id DESC

您應該使用SCOPE_IDENTITY()來獲取表上的最后一個主鍵插入值。 我想它應該是ID值。 一旦你擁有它,使用這個ID做一個SELECT ,你有它。

還有@@IDENTITY但是使用一個或另一個可能導致值不准確的一些差異。

查看這些詳細文章以獲取更多見解,有關如何使用它們的詳細說明,它們的不同之處以及一些演示代碼:

對於2008 R2 R2 Service Pack 1( 鏈接 )之前的SQL Server:

使用SCOPE_IDENTITY()和@@ IDENTITY時,您可能會收到不正確的值

在這種情況下,OUTPUT子句是最安全的機制:

DECLARE @InsertedRows AS TABLE (Id int)
DECLARE @NewId AS INT
INSERT INTO HumanResources.Employees
  ( /* column names */)
OUTPUT Inserted.Id INTO @InsertedRows
  VALUES (/* column values */)
SELECT @NewId = Id FROM @InsertedRows

在你的表中添加auto increement字段,比如.... index(INT,AUTO INCREEMENT)然后在插入或任何操作完成之前c通過獲取max(index)得到你的最后一條記錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM