获取插入的行ID

时间:2012-04-25 10:17:21

标签: sql sql-server-2005

我创建了表

create table AA(
    id int ,
    name varchar(20),
    sname varchar(20)
)

现在我插入一个新值并获取插入的行id:

declare @InsID table (InId int)
insert into AA (name, sname)select 1, 'John', 'Rock'
output inserted.id into @output
Select * from @InsID

但它显示错误:Msg 102,Level 15,State 1,Line 3 'inserted'附近的语法不正确。有谁知道这似乎是什么问题?

2 个答案:

答案 0 :(得分:3)

declare @InsID table (InId int)

insert into AA (name, sname)
output inserted.id into @InsID
select 'John', 'Rock'

Select * from @InsID

答案 1 :(得分:1)

假设表中的ID列被定义为标识列,则:

SELECT SCOPE_IDENTITY()

有关详细信息,请参阅此文章: http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

如果您确实想使用OUTPUT子句,则语法错误。输出必须紧跟在表之后,在值之前:

declare @InsID table (InId int)

insert into AA (name, sname)
output inserted.id into @InsID 
select 'John', 'Rock'

Select * from @InsID

有关每个

的示例,请参阅here