如何在单个查询(sql server)中插入1条记录后检索自动增量值

Posted

技术标签:

【中文标题】如何在单个查询(sql server)中插入1条记录后检索自动增量值【英文标题】:How to Retrieve autoincremnt value after inserting 1 record in single query (sql server) 【发布时间】:2011-12-22 07:09:47 【问题描述】:

我的表中有两个字段:

一个是主键自动递增值,第二个是文本值。 可以说:xyzId & xyz

所以我可以像这样轻松插入

insert into abcTable(xyz) Values('34')

执行上述查询后,它必须插入这些信息

xyzId=1 & xyz=34

为了检索,我可以像这样检索

select xyzId from abcTable

但是为此我必须写下两个操作。我不能在单/子查询中检索吗?

谢谢

【问题讨论】:

get new SQL record ID的可能重复 【参考方案1】:

如果您使用的是 SQL Server 2005 或更高版本,则可以使用 output 子句返回自动创建的 ID。

试试这个:

insert into abcTable(xyz)
output inserted.xyzId
values('34') 

【讨论】:

【参考方案2】:

我认为您不能在单个查询中进行插入和选择。 您可以使用存储过程将两条指令作为原子操作执行,或者您可以使用 ';' 在代码中使用两条指令构建查询(分号)作为指令之间的分隔符。

无论如何,对于 SQL Server 中的选择标识值,您必须检查 @@IDENTITYSCOPE_IDENTITYIDENT_CURRENT。它比表格中的选择更快更干净。

【讨论】:

以上是关于如何在单个查询(sql server)中插入1条记录后检索自动增量值的主要内容,如果未能解决你的问题,请参考以下文章

工作高峰时段的 Sql Server 批量插入

如何在 SQL Server 2008 中通过单个查询更新两个表 [重复]

如何从1个表中选择许多行并将其插入另一个表中特定行的特定JSONB字段中?但是在单个原始SQL查询中

PDO Prepared在单个查询中插入多行

SQL Server 2005中的分区表:如何添加查询修改分区表中的数据

如何使用单个查询在 SQL 中获取最后一个增量 id