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

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- 王朝網路 版權所有