SQL server插入數據后,如何獲取自增長字段的值?


insert into Tb_People(uname,era,amount) values( '兆周','老年','10000')
  select @@identity
  --當運行完插入語句后,執行select   @@identity就可得到自動生成的id
  --如果是sql server 最好用select SCOPE_IDENTITY() as id
--因為@@identity全局的
select SCOPE_IDENTITY() as id 
select IDENT_CURRENT ('Tb_People')
select MAX(id) from Tb_People

--SCOPE_IDENTITY
--返回插入到同一作用域中的 IDENTITY 列內的最后一個 IDENTITY 值。一個作用域就是一個模塊——存儲過程、觸發器、函數或批處理。因此,如果兩個語句處於同一個存儲過程、函數或批處理中,則它們位於相同的作用域中。
--IDENT_CURRENT
--返回為任何會話和任何作用域中的指定表最后生成的標識值。這個函數需要一個以表名為值的變量,也就是說雖然不受會話和作用域的限制,卻會受到表的限制。
--@@IDENTITY
--返回最后插入的標識值。
--體會:加上事務處理,兩個函數一個變量沒有本質區別。不加事務處理兩個函數一個變量受到其他會話、作用域的影響不一樣。
--一直以來都是使用@@identity來獲得最后一個插入到表的記錄的identity值,最近發現這種方法在某種情況是不可靠的,先來看看兩個概念
--作用域:在SQL SERVER作用域就是一個模塊-存儲過程,觸發器,函數或批處理
--會話: 一個用戶連接產生的所有上下文信息

--相同點:都是返回最后插入的標識值
--不同點:
--@@identity:返回當前會話最后一個標識值,不限於特定的作用域;
--ident_current('tablename'):返回任何會話,任何作用域中的指定表中生成的最后一個標識值;
--scope_identity:返回當前會話當前作用域任何表生成的最后一個標識值 。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM