获取SQL Server中上次更新的行的标识

Hel*_*Out 12 sql-server stored-procedures sql-update

@@IDENTITY返回插入ID的最后一行,我想检索更新的最后一行的ID .

这是我的查询:

UPDATE [Table] 
SET Active = 1, 
    Subscribed = 1, 
    RenewDate = GETDATE(),
    EndDate = DATEADD(mm,1,getdate()),
WHERE SC = @SC
  AND Service = @Ser
Run Code Online (Sandbox Code Playgroud)

如何获取此更新行的ID?

该列被调用TableID,我没有在查询中使用它.

mar*_*c_s 15

由于没有插入ID,您无法检索ID .....

但是你可以:

  1. 只需使用与您的相同标准查询表UPDATE:

    SELECT TableID 
    FROM dbo.Table
    WHERE SC = @SC AND Service = @Ser  -- just use the same criteria
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用该OUTPUT条款UPDATE来获取该信息:

    UPDATE [Table] 
    SET Active = 1, 
        Subscribed = 1, 
        RenewDate = GETDATE(),
        EndDate = DATEADD(mm,1,getdate())
    OUTPUT Inserted.TableId       -- output the TableID from the table
    WHERE SC = @SC AND Service = @Ser
    
    Run Code Online (Sandbox Code Playgroud)

了解更多有关OUTPUT条款 Technet上-它可以被用来INSERTDELETE


Mik*_*ike 7

你可以尝试使用这个:

OUTPUT INSERTED.TableID 
Run Code Online (Sandbox Code Playgroud)

在你的代码中它看起来像这样:

    UPDATE [Table] 
    SET Active = 1, 
        Subscribed = 1, 
        RenewDate = GETDATE(),
        EndDate = DATEADD(mm,1,getdate()),
OUTPUT INSERTED.TableID 
    WHERE SC = @SC
      AND Service = @Ser
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.