我只想执行一个 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/