如何将其插入到表中并返回主键值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我有一个主键设置为自动增量。

我正在执行多个查询,我需要在另一个表中检索作为外键使用的主键值(IsIdentity = TRUE)

在执行INSERT查询时,有什么方法可以获得主键值吗?现在,我正在请求,并获得了最大的值,在那一栏,这似乎真的很麻烦。

有什么建议吗?

提问于
用户回答回答于
insert into YourTable values (...)

用scope_identity()获得新的PK

select scope_identity()
用户回答回答于

如果使用的是SQLServer 2005或更高版本,则可以使用输出子句。

create table T(
  pk int identity primary key,
  dat varchar(20)
);
go

insert into T
output inserted.pk
values ('new item');
go

drop table T;

输出可以指向表以及客户端。例如:

create table T(
  pk int identity primary key,
  dat varchar(20)
);

create table U(
  i int identity(1001,1) primary key,
  T_pk int not null,
  d datetime
);
go


insert into T
output inserted.pk, getdate()
into U(T_pk,d)
values ('new item'), ('newer item');
go

select * from T;
select * from U;
go

drop table T, U;

从SQLServer 2008开始,你可以使用“可组合DML”来获得更多的可能性。

扫码关注云+社区