CREATE TABLE TestTB1(ID INT IDENTITY(1,1) PRIMARY KEY, DATA VARCHAR(50))
當會話沒有插入數據的時候,@@IDENTITY 和 SCOPE_IDENTITY() 都是null,而 IDENT_CURRENT是1 這個是需要區別
SELECT @@identity AS '@@identity' , SCOPE_IDENTITY() AS 'SCOPE_IDENTITY()' , IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'
1 INSERT INTO TestTB1 (Data) SELECT 'A'2 SELECT '會話1',@@IDENTITY AS '@@IDENTITY',IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'
INSERT INTO TestTB1 (Data) SELECT 'B'SELECT '會話2',@@IDENTITY AS '@@IDENTITY',IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'那再在會話1里面插入一條數據。這個時候,會話2里面的@@IDENTITY 依然是2,證明@@IDENTITY 是與會話有關的會話1
INSERT INTO TestTB1 (Data) SELECT 'C'SELECT '會話1',@@IDENTITY AS '@@IDENTITY',IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'
會話2
SELECT * FROM dbo.TestTB1SELECT '會話2',@@IDENTITY AS '@@IDENTITY',,IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'
TRUNCATE TABLE dbo.TestTB1goCREATE PROCEDURE #TEST_PROASBEGIN INSERT INTO TestTB1 (Data) SELECT 'A'SELECT @@identity AS '@@identity' , SCOPE_IDENTITY() AS 'SCOPE_IDENTITY()' , IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'ENDgoEXEC #TEST_PROSELECT @@identity AS '@@identity' , SCOPE_IDENTITY() AS 'SCOPE_IDENTITY()' , IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'
那嵌套的情況會怎樣呢?再嵌套一層看看,實驗結果是跟上面是一致的,在嵌套情況下,作用域不同,SCOPE_IDENTITY() 會重新計數,如下
TRUNCATE TABLE dbo.TestTB1goCREATE PROCEDURE #TEST_PRO_InnerASBEGIN INSERT INTO TestTB1 (Data) SELECT 'A' SELECT 'TEST_PRO_Inner', @@identity AS '@@identity' , SCOPE_IDENTITY() AS 'SCOPE_IDENTITY()' , IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'ENDgoCREATE PROCEDURE #TEST_PROASBEGIN EXEC #TEST_PRO_Inner SELECT 'TEST_PRO', @@identity AS '@@identity' , SCOPE_IDENTITY() AS 'SCOPE_IDENTITY()' , IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()' INSERT INTO TestTB1 (Data) SELECT 'B' SELECT 'TEST_PRO_1', @@identity AS '@@identity' , SCOPE_IDENTITY() AS 'SCOPE_IDENTITY()' , IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'ENDgoEXEC #TEST_PROSELECT '外部', @@identity AS '@@identity' , SCOPE_IDENTITY() AS 'SCOPE_IDENTITY()' , IDENT_CURRENT('TestTB1') AS 'IDENT_CURRENT()'
PS:第一次寫blog,寫得不好,請各位看官多包涵。多指導
新聞熱點
疑難解答