SQL Server 中,可以使用 SCOPE_IDENTITY()、 @@IDENTITY 、 IDENT_CURRENT() 來取得最后插入記錄的值值,它們的區(qū)別在于:


SCOPE_IDENTITY() 返回插入到同一作用域中的 IDENTITY 列內(nèi)的最后一個(gè) IDENTITY 值。一個(gè)作用域就是一個(gè)模塊——存儲(chǔ)過程、觸發(fā)器、函數(shù)或批處理。因此,如果兩個(gè)語句處于同一個(gè)存儲(chǔ)過程、函數(shù)或批處理中,則它們位于相同的作用域中。

直接使用 select? SCOPE_IDENTITY()


@@IDENTITY?????? 返回在當(dāng)前會(huì)話的所有表中生成的最后一個(gè)標(biāo)識(shí)值,沒有參數(shù),直接使用 select? @@IDENTITY


IDENT_CURRENT()? 返回為任何會(huì)話和任何作用域中的指定表最后生成的標(biāo)識(shí)值, 其中的參數(shù),是表名,例如 select IDENT_CURRENT('TRole')

-------------------------------------------------------------

2.SCOPE_IDENTITY()是絕對(duì)可靠的,可以用在存儲(chǔ)過程中,連觸發(fā)器也不用建,沒并發(fā)沖突


SELECT IDENT_CURRENT('TableName') --返回指定表中生成的最后一個(gè)標(biāo)示值???
SELECT IDENT_INCR('TableName')--返回指定表的標(biāo)示字段增量值
SELECT IDENT_SEED('TableName')--返回指定表的標(biāo)示字段種子值

返回最后插入記錄的自動(dòng)編號(hào)
SELECT IDENT_CURRENT('TableName')
返回下一個(gè)自動(dòng)編號(hào):???
SELECT IDENT_CURRENT('TableName') + (SELECT IDENT_INCR('TableName'))

SELECT @@IDENTITY --返回當(dāng)前會(huì)話所有表中生成的最后一個(gè)標(biāo)示值