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:返回當前會話當前作用域任何表生成的最后一個標識值 。