将Scope_Identity与OUTPUT子句一起用于审计表

时间:2017-10-23 10:51:01

标签: sql tsql stored-procedures

我使用一个存储过程对主表进行插入,然后使用OUTPUT插入审计表中,并使用SCOPE_IDENTITY()获取添加到主表的记录的id。但问题是SCOPE_IDENTITY()是否返回了添加到Audit而非主表的内容的ID。

下面的代码显示了我的SP:

BEGIN TRY
Insert into [Client](
    Name,
    Disabled, 
    CreatedBy, 
    CreatedOn) 

    OUTPUT  inserted.ClientID, inserted.[Name], inserted.[Disabled], 
            inserted.CreatedBy, inserted.CreatedOn
    INTO [Audit].[Client]
values(
    @Name, 
    @Disabled, 
    @CreatedBy, 
    SYSDATETIME())


Set @ID = SCOPE_IDENTITY()

END TRY

return  @ID 

有关如何获取添加到客户端表而不是客户端审计表的记录ID的任何帮助?

由于

1 个答案:

答案 0 :(得分:1)

使用OUTPUT值(如果您没有在客户端上使用触发器)或

Set @ID = IDENT_CURRENT ('Client')

https://docs.microsoft.com/en-us/sql/t-sql/functions/ident-current-transact-sql