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

BOS*_*OSS 8 sql sql-server sql-server-2008

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

insert into V_Post output inserted._ID values('Please return the id of THIS row :)')
Run Code Online (Sandbox Code Playgroud)

那将返回一个像155的数字

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

insert into V_Posts values(1, XVALUE, null, GETDATE(), null, null, 1)
Run Code Online (Sandbox Code Playgroud)

所以我想要的是:

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)
Run Code Online (Sandbox Code Playgroud)

要么

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)
Run Code Online (Sandbox Code Playgroud)

但它都不起作用:(

我希望我能很好地解释我的问题,我真的非常感谢你的帮助.

编辑

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

M.A*_*Ali 11

IDENTITY COLUMN

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

如果不是身份列

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
Run Code Online (Sandbox Code Playgroud)

编辑
由Martin Smith建议使用SCOPE_IDENTITY()可以返回由另一个并发会话生成的标识值,因此最好使用OUTPUTunction或我的第二个建议的SCOPE_IDENTITY()Method.