如果你使用儲存過程的話,將非常簡單,**如下:set @newid=@@identity
說明:在一條 insert、select into 或大容量複製語句完成後,@@identity 中包含此語句產生的最後的標識值。若此語句沒有影響任何有標識列的表,則 @@identity 返回 null。若插入了多個行,則會產生多個標識值,@@identity 返回最後產生的標識值。如果此語句激發乙個或多個執行產生標識值的插入操作的觸發器,則語句執行後立即呼叫 @@identity 將返回由觸發器產生的最後的標識值。若 insert 或 select into 語句失敗或大容量複製失敗,或事務被回滾,則 @@identity 值不會還原為以前的設定。
在返回插入到表的 @@identity 列的最後乙個值方面,@@identity、scope_identity 和 ident_current 函式類似。
@@identity 和 scope_identity 將返回在當前會話的所有表中生成的最後乙個標識值。但是,scope_identity 只在當前作用域內返回值,而 @@identity 不限於特定的作用域。
ident_current 不受作用域和會話的限制,而受限於指定的表。ident_current 返回任何會話和任何作用域中為特定表生成的標識值。有關更多資訊,請參見 ident_current。
示例下面的示例向帶有標識列的表中插入一行,並用 @@identity 顯示在新行中使用的標識值。
insert into infoclass (infoclass) values (''accountant'')
這時我們插入一條記錄,下面我們使用語句得到標識值:
select @@identity as ''identity''
我的表infoclass中有個id欄位,它原的值是14插入新的記錄後自動產生了值15,因些,上面命令執行後返回值:15。
下面說說如何在.net中得到插入記錄後的id值。
因為sqlserver為我們提供了多重查詢的功能,這大大方便了我們的工作。請看:
dim sql as string = "insert into jobs (job_desc,min_lvl,max_lvl) values (''a new job'', 25, 100);" & _
"select job_id from jobs where job_id = @@identity"
dim cmd as new sqlcommand(sql, cn)
上面可以看到,sqlcommand可以執行多條語句,各語句之間用「;"分隔。第一條執行插入,第二條則返回最後插入記錄的id值,因為查詢返回的是單列的,並且值也是唯一的,所以可以使用executescalar獲得:
dim jobid as integer = cint(cmd.executescalar())a
附錄:transact-sql 參考
@@identity
返回最後插入的標識值。
語法
@@identity
返回型別
numeric
注釋
在一條 insert、select into 或大容量複製語句完成後,@@identity 中包含此語句產生的最後的標識值。若此語句沒有影響任何有標識列的表,則 @@identity 返回 null。若插入了多個行,則會產生多個標識值,@@identity 返回最後產生的標識值。如果此語句激發乙個或多個執行產生標識值的插入操作的觸發器,則語句執行後立即呼叫 @@identity 將返回由觸發器產生的最後的標識值。若 insert 或 select into 語句失敗或大容量複製失敗,或事務被回滾,則 @@identity 值不會還原為以前的設定。
在返回插入到表的 @@identity 列的最後乙個值方面,@@identity、scope_identity 和 ident_current 函式類似。
@@identity 和 scope_identity 將返回在當前會話的所有表中生成的最後乙個標識值。但是,scope_identity 只在當前作用域內返回值,而 @@identity 不限於特定的作用域。
ident_current 不受作用域和會話的限制,而受限於指定的表。ident_current 返回任何會話和任何作用域中為特定表生成的標識值。有關更多資訊,請參見 ident_current。
示例
下面的示例向帶有標識列的表中插入一行,並用 @@identity 顯示在新行中使用的標識值。
insert into jobs (job_desc,min_lvl,max_lvl)
values ('accountant',12,125)
select @@identity as 'identity'
請參見
create table
ident_current
insert
scope_identity
select
MYSQL如何獲得剛插入記錄的ID值。
關鍵部分 1。mysql使用sql函式last insert id 獲得剛剛插入的auto increace欄位的id值。必須前一sql為一insert語句,如果是其他語句,返回的id值為零。2。使用command物件的時候,注意不能關閉物件後再用select last insert id 函式,這...
mysql 如何高效獲取新插入的最後記錄
在mysql中,使用auto increment型別的id欄位作為表的主鍵,並用它作為其他表的外來鍵,形成 主從表結構 這是資料庫設計中常見的用法。但是在具體生成id的時候,我們的操作順序一般是 先在主表中插入記錄,然後獲得自動生成的id,以它為基礎插入從表的記錄。這裡面有個困難,就是插入主表記錄後...
ms sql 一次插入多條記錄的語句
有的時候我們需要一次像資料庫中新增多條記錄,我們可以使用下面的語句來實現 新增一條記錄 insert into tablename col1,col2,col3 values 1,2,3 新增多條記錄 insert into tablename col1,col2,col3 select 3,4,5...