插入

时间:2016-07-01 11:51:43

标签: c# sql asp.net sql-server sql-server-2008

如何在插入时从输出子句插入唯一ID之前和之后获取?

例如:我有一个名为A的表,我需要通过

复制一些记录
  

insert into select statement

我需要使用

将旧的唯一ID和新的唯一ID添加到临时表中
  

OUTPUT Clause

这意味着我需要在插入唯一标识符之前将返回类型设置为,并在惰性唯一标识符之后输入。为此,我尝试使用以下查询

    DECLARE @MyTableVar TABLE 
  ( 
     newid UNIQUEIDENTIFIER, 
     oldid UNIQUEIDENTIFIER 
  ); 
INSERT A (name, description) 
output inserted.guid, 
       d.guid 
INTO @MyTableVar 
SELECT name, description
FROM   A d 
WHERE  deptID = 550; 
SELECT * 
FROM   @MyTableVar 

但我无法在输出子句中获得 d.guid 。如果在插入唯一ID作为输出之前和之后有任何其他选项,请更正我。

2 个答案:

答案 0 :(得分:0)

您可以使用

@@IDENTITY

获取插入唯一ID作为输出。

答案 1 :(得分:0)

您应该使用表中的列名。在您的情况下,您使用的是Inserted.Guid,这会导致语法错误

create table tt
(
id varchar(300) default newid()
)

declare @t table
(
id varchar(300)
)

insert into tt
output inserted.* into @t
default values

select * from @t