2015-11-02 32 views

回答

2

我同意米莉的評論。但是,如果您不熟悉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做更多的工作,比如寫一個審計表,或更多的數據寫入到一個細節表等

+0

,所以我看到的。但這不是強制性的。我對嗎? – stackdisplay

+0

在你的問題的'select'語句中,'scope_identity()'也許是獲取最後插入記錄信息的最可靠的方法。這不是強制性的。如果您確定在交易過程中沒有發生其他插入事件,您可以使用'select top 1 * ... by id desc'。 – zedfoxus