首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何插入到表中并取回主键值?

如何插入到表中并取回主键值?
EN

Stack Overflow用户
提问于 2009-09-01 03:57:54
回答 6查看 50.2K关注 0票数 22

我将主键设置为自动递增。

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

在执行insert查询时,有没有什么很好的方法来取回主键值?现在,我正在重新查询,并在该列中获得最高值,这似乎真的很麻烦。

有什么建议吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-09-01 03:59:36

代码语言:javascript
复制
insert into YourTable values (...)

使用scope_identity()获取新的PK

代码语言:javascript
复制
select scope_identity()
票数 32
EN

Stack Overflow用户

发布于 2009-09-01 04:14:28

如果使用的是SQL Server2005或更高版本,则可以使用OUTPUT子句。

代码语言:javascript
复制
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;

输出既可以定向到表,也可以定向到客户端。例如:

代码语言:javascript
复制
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;

从SQL Server2008开始,您可以使用"composable DML“来实现更多可能性。

票数 41
EN

Stack Overflow用户

发布于 2013-06-01 04:03:33

代码语言:javascript
复制
INSERT INTO YourTable (1, 2, etc.)
OUTPUT inserted.yourIDcolumn
VALUES (value1, value2, value...)

注意:这是针对MS SQL 2005及更高版本的

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1360453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档