sql - 将输出 Insert._ID 的值存储到局部变量以在另一个查询中重用它

标签 sql sql-server sql-server-2008

我只想执行一个 SQL 查询,该查询将返回添加到表中的行的当前 ID,例如:

insert into V_Post output inserted._ID values('Please return the id of THIS row :)')

这将返回一个像 155 这样的数字

所以我的问题的目的是将该数字存储在某种局部变量(如 XVALUE)中,然后在任何其他 SQL 查询中使用此 XVALUE,如:

insert into V_Posts values(1, XVALUE, null, GETDATE(), null, null, 1)

所以我想到了类似的东西:

int XVALUE = insert into V_Post output inserted._ID values('Please return the id of THIS row :)')

insert into V_Posts values(1, XVALUE, null, GETDATE(), null, null, 1)

或者

insert into V_Posts values(1, insert into V_Post output inserted._ID values('Please return the id of THIS row :)'), null, GETDATE(), null, null, 1)

但是都不起作用:(

我希望我能很好地解释我的问题,并且提前感谢您的帮助。

编辑

请注意我有两个表:V_posts 和 V_post

最佳答案

身份栏

如果它是标识列并且您只插入一行,那么您可以使用 SCOPE_IDENTITY()函数获取当前 session 范围内最后生成的 Identity 值。

DECLARE @NewValue INT;
insert into V_Post 
values('Please return the id of THIS row :)')
SET @NewValue = SCOPE_IDENTITY()

IF NOT IDENTITY 列或多个标识值

如果它是一个标识列并且您要插入多行并希望返回所有新插入的标识值,或者它不是一个标识列但您需要最后插入的值,那么您可以确保 OUTPUT命令获取新插入的值。

DECLARE @tbl TABLE (Col1 DataType)
DECLARE @NewValue Datatype;

insert into V_Post 
output inserted._ID INTO @tbl
values('Please return the id of THIS row :)')

SELECT @NewValue = Col1 FROM @tbl

关于sql - 将输出 Insert._ID 的值存储到局部变量以在另一个查询中重用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034342/

相关文章:

sql-server - 如何使用 SSIS 2014 和脚本任务处理 SSAS 2012 多维数据集

c# - 更新 C# 和 Sql server 2008 后日期错误

sql - 计算一列中另一列中有多个值的不同记录

mysql - 如何根据另一个选择查询的数据运行选择查询

php - 从数据库中获取多个值

PHP SQL - 从一张表中进行多项选择

sql-server - 如何在 SQL Server 中将 bool 字段从可为 null 的列中删除?

sql - nvarchar 在存储过程中限制为 8000 个字符

sql - 获取季度中的天数

sql-server-2008 - 安排事件时显示美国假期的日历