【问题标题】:How to get before and after insert unique ID from output clause while inserting插入时如何从输出子句中插入唯一ID之前和之后
【发布时间】:2016-11-03 19:49:27
【问题描述】:

如何在插入时从输出子句中获取插入唯一 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 作为输出之前和之后还有其他选项可以获取,请纠正我。

【问题讨论】:

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


    【解决方案1】:

    你可以使用

    @@IDENTITY
    

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

    【讨论】:

    • 他不是在问身份
    【解决方案2】:

    您应该使用表中的列名。在您的情况下,您使用的 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
    

    【讨论】:

    • 通过提供“Inserted.Guid”,我能够获得新的插入 guid。但我无法获得旧的 guid id("d.guid"),原因是,"d.guid" 不在输出子句范围内,我无法通过此答案获得解决方案。
    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多