我看過一些插入後返回select語句的存儲過程如下。什麼是用法?插入語句後返回select的用法T-SQL
SELECT
*
FROM
[dbo].[TableName]
WHERE
[PrimaryKey] = SCOPE_IDENTITY()
我看過一些插入後返回select語句的存儲過程如下。什麼是用法?插入語句後返回select的用法T-SQL
SELECT
*
FROM
[dbo].[TableName]
WHERE
[PrimaryKey] = SCOPE_IDENTITY()
我同意米莉的評論。但是,如果您不熟悉SQL Server,則可能會在文檔中找到一些新詞,並可能會提出更多問題。希望下面的解釋會有所幫助。
https://msdn.microsoft.com/en-us/library/ms190315(v=sql.105).aspx說:
返回插入標識列在 同一範圍內的最後一個標識值。範圍是一個模塊:存儲過程,觸發器,函數或批處理。因此,如果 它們處於相同的存儲過程,函數或批處理中,則兩個語句在相同的範圍內。
在您的存儲過程中,INSERT
語句是在具有標識列的表上完成的。在插入過程中,此標識列會獲得增加的自動編號。要知道這個數字是什麼,使用SCOPE_IDENTITY()
函數。
例如:
create table employees (id int identity(1,1) primary key, fullname varchar(100));
insert into employees (fullname) values ('John Smith');
select scope_identity(); -- will return the ID of the inserted record
SQLFiddle例如:http://sqlfiddle.com/#!3/41f84/2(繼續按運行SQL看到最後輸入的數據的ID)。
然後就可以使用這個自動生成的ID做更多的工作,比如寫一個審計表,或更多的數據寫入到一個細節表等
,所以我看到的。但這不是強制性的。我對嗎? – stackdisplay
在你的問題的'select'語句中,'scope_identity()'也許是獲取最後插入記錄信息的最可靠的方法。這不是強制性的。如果您確定在交易過程中沒有發生其他插入事件,您可以使用'select top 1 * ... by id desc'。 – zedfoxus
谷歌SCOPE_IDENTITY –