SQL @@Identity ,Scope_identity() 作用域

哈哈哈哈哈我撒發表於2009-11-09

  scope_identity()

          返回當前會話同一作用域中的任意表生成的最後一個identity值

 @@identity

          返回當前會話插入到任意表生成的最後一個identity值(不受作用域限制)

我在一個儲存過程中,進行Insert 操作,然後在儲存過程外面用 select scope_identity() ,取剛才新增記錄的的自增列的值,程式提示,空物件引用,而用select  @@identity  則可以取到。這就是這個”作用域“ 在作怪嘍。呵呵

 

 

這個作為一個作用域,什麼是作用域:(一個模組就是一個作用域;一個儲存過程、一個觸發器、一個批處理或者一個函式都是一個獨立的作用域。).

顯然 SCOPE_IDENTITY() 是在insert (儲存過程)這個作用域上的,而@@IDENTITY 沒有作用域的限制.它是個全域性作用域.

@@IDENTITY 是取全域性操作的最後一步操作所產生的自增域的值的.

 

相關文章