有些时候我们需要得到刚刚插入数据库中的条目id,用于相关系统的更改,在以前我是使用select+top 1+desc 这种笨方法实现的,在没有并发的时候,还说的过去,但用户一多的话,这种方法就不行了,当然,你也可以考虑加锁的办法,但是对性能损耗太大,无意发现SQL Server 2005 的全新output子句,利用它,我们可以很轻松的得到刚刚插入的id号。
具体示例如下:
字串9
SET ANSI_NULLS ON 字串6
GO
字串9
SET QUOTED_IDENTIFIER ON 字串1
GO 字串6
--创建一个临时表 字串2
CREATE TABLE [soloreztest]( 字串5
[id] [int] IDENTITY(1,1) NOT NULL, 字串4
[name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL, 字串7
) ON [PRIMARY] 字串9
Go
字串9
--插入数据,并返回刚刚插入的数据id 字串5
INSERT 字串6
INTO [soloreztest]
字串4
([name])
字串8
output inserted.id 字串5
VALUES 字串6
('solorez') 字串8
--执行结果:
字串7
--id 字串8
------------- 字串4
--5
字串5
(1 行受影响)
字串4
--查看所有信息 字串1
select * from [soloreztest]
字串4
--执行结果:
字串8
--id name
字串7
------------- -------------------------------------------------- 字串5
--1 solorez
字串2
--2 solorez 字串1
--3 solorez 字串2
--4 solorez
字串1
--5 solorez
字串2
-- 字串8
--(5 行受影响)
字串7