close

SCOPE_IDENTITY、@@IDENTITY、IDENT_CURRENT

SCOPE_IDENTITY
使用方式:SELECT SCOPE_IDENTITY()
說明:傳回當前作業(預存程序、觸發程序、函數或批次)中,最後一個識別值(索引值)。

@@IDENTITY
使用方式:SELECT @@IDENTITY
說明:傳回資料庫所有作業中,最後一個識別值(索引值)。

IDENT_CURRENT
使用方式:SELECT IDENT_CURRENT('資料表名稱')
說明:傳回指定資料表中最後一個識別值(索引值)。P.S.無法對暫存表使用

範例

CREATE TABLE A_TABLE
( id int IDENTITY, TEXT nvarchar(10) )
CREATE TABLE B_TABLE
( id int IDENTITY, TEXT nvarchar(10) )
INSERT INTO A_TABLE VALUES('A')
INSERT INTO A_TABLE VALUES('A')
INSERT INTO B_TABLE VALUES('B')
SELECT SCOPE_IDENTITY() as SCOPE_IDENTITY,@@IDENTITY as 'IDENTITY',
IDENT_CURRENT('A_TABLE') as A_TABLE,IDENT_CURRENT('B_TABLE') as B_TABLE

DROP TABLE A_TABLE
DROP TABLE B_TABLE

結果

輸出為1,1,2,1

SCOPE_IDENTITY():該批次作業中最後一筆索引值(從B_Table來)所以為1 

@@IDENTITY:目前資料庫當下作業最後一筆所以值(從B_Table來)所以為1 

IDENT_CURRENT('A_TABLE'):A_Table中最後一筆索引值為2

IDENT_CURRENT('B_TABLE'):B_Table中最後一筆索引值為1

 

SCOPE_IDENTITY、@@IDENTITY的差異比較難觀察出來,如果有人有好的範例可以分享一下

參考

http://msdn.microsoft.com/zh-tw/library/ms190315.aspx

http://msdn.microsoft.com/zh-tw/library/ms187342.aspx

http://technet.microsoft.com/zh-tw/library/ms175098.aspx

 

arrow
arrow
    全站熱搜

    Louis 發表在 痞客邦 留言(1) 人氣()