| 導購 | 订阅 | 在线投稿
分享
 
 
 

SQL Server 2005返回剛剛插入的數據條目id值

2008-08-16 07:22:31  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
  有些時候我們需要得到剛剛插入數據庫中的條目id,用于相關系統的更改,在以前我是使用select+top 1+desc 這種笨方法實現的,在沒有並發的時候,還說的過去,但用戶一多的話,這種方法就不行了,當然,你也可以考慮加鎖的辦法,但是對性能損耗太大,無意發現SQL Server 2005 的全新output子句,利用它,我們可以很輕松的得到剛剛插入的id號。

  具體示例如下:

  SET ANSI_NULLS ON

  GO

  SET QUOTED_IDENTIFIER ON

  GO

  --創建一個臨時表

  CREATE TABLE [soloreztest](

  [id] [int] IDENTITY(1,1) NOT NULL,

  [name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,

  ) ON [PRIMARY]

  Go

  --插入數據,並返回剛剛插入的數據id

  INSERT

  INTO [soloreztest]

  ([name])

  output inserted.id

  VALUES

  ('solorez')

  --執行結果:

  --id

  -------------

  --5

  (1 行受影響)

  --查看所有信息

  select * from [soloreztest]

  --執行結果:

  --id name

  ------------- --------------------------------------------------

  --1 solorez

  --2 solorez

  --3 solorez

  --4 solorez

  --5 solorez

  --

  --(5 行受影響)
 
有些時候我們需要得到剛剛插入數據庫中的條目id,用于相關系統的更改,在以前我是使用select+top 1+desc 這種笨方法實現的,在沒有並發的時候,還說的過去,但用戶一多的話,這種方法就不行了,當然,你也可以考慮加鎖的辦法,但是對性能損耗太大,無意發現SQL Server 2005 的全新output子句,利用它,我們可以很輕松的得到剛剛插入的id號。 具體示例如下: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --創建一個臨時表 CREATE TABLE [soloreztest]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, ) ON [PRIMARY] Go --插入數據,並返回剛剛插入的數據id INSERT INTO [soloreztest] ([name]) output inserted.id VALUES ('solorez') --執行結果: --id ------------- --5 (1 行受影響) --查看所有信息 select * from [soloreztest] --執行結果: --id name ------------- -------------------------------------------------- --1 solorez --2 solorez --3 solorez --4 solorez --5 solorez -- --(5 行受影響)
󰈣󰈤
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
  免責聲明:本文僅代表作者個人觀點,與王朝網絡無關。王朝網絡登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
© 2005- 王朝網路 版權所有