1. 程式人生 > >sql語句中有insert然後有個[email protected]@identity,該怎麼執行

sql語句中有insert然後有個[email protected]@identity,該怎麼執行

@@identity是表示的是最近一次向具有identity屬性(即自增列)的表插入資料時對應的自增列的值,是系統定義的全域性變數
一般系統定義的全域性變數都是以@@開頭,使用者自定義變數以@開頭。
select @@identity,accesssqlserver中都有效.

比如有個表A,它的自增列是id,當向A表插入一行資料後,
如果插入資料後自增列的值自動增加至101,則通過select @@identity得到的值就是101。
使用@@identity前提是在進行insert操作後,執行select @@identity的時候連線沒有關閉,否則得到的將是NULL值。

如以下SQL

語句:

string sql="insert into users values('admin','admin','男');select @@Identity";

sql語句拼裝在一起執行,等於是先執行插入操作,然後返回所插入的資料的id

這條sql語句直接 用sqlcommand的ExecuteScalar方法執行 會返回所插入的資料的的id號

?

如果是sql server 最好用select SCOPE_IDENTITY()

因為@@identity全域性的

同類還有IDENT_CURRENT(‘table’)

IDENT_CURRENT 返回為任何會話和任何作用域中的特定表最後生成的標識值。IDENT_CURRENT 不受作用域和會話的限制,而受限於指定的表。IDENT_CURRENT 返回為任何會話和作用域中的特定表所生成的值。
@@IDENTITY

 返回為當前會話的所有作用域中的任何表最後生成的標識值。
SCOPE_IDENTITY 返回為當前會話和當前作用域中的任何表最後生成的標識值

SCOPE_IDENTITY 和 @@IDENTITY 返回在當前會話中的任何表內所生成的最後一個標識值。但是,SCOPE_IDENTITY 只返回插入到當前作用域中的值;@@IDENTITY 不受限於特定的作用域。