代码之家  ›  专栏  ›  技术社区  ›  Bob The Janitor

获取我在Sql Server中更新的行的Id

  •  20
  • Bob The Janitor  · 技术社区  · 15 年前

    我试图返回我在sql中更新的行的Id

    UPDATE ITS2_UserNames
      SET AupIp = @AupIp
      WHERE @Customer_ID = TCID AND @Handle_ID = ID
    
      SELECT @@ERROR AS Error, @@ROWCOUNT AS RowsAffected, SCOPE_IDENTITY() AS ID
    

    我的ID一直为空,我怎么能得到这个?

    2 回复  |  直到 15 年前
        1
  •  60
  •   Elyor Murodov    6 年前

    这个 @@identity scope_identity() 会给你一个 刚出现的

    UPDATE ITS2_UserNames  
    SET AupIp = @AupIp  
    OUTPUT INSERTED.PrimaryKeyID
    WHERE @Customer_ID = TCID AND @Handle_ID = ID
    
        2
  •  5
  •   Samuel Pereira    5 年前

    我想@pauloya想说的是:

    如果您要更新一个表,那么您有一个 WHERE 子句,所以如果在select上使用相同的where子句 INTO #tempTable UPDATE .

    SELECT
        userName.ID
    INTO #temp
    FROM ITS2_UserNames AS userNames
    WHERE @Customer_ID = TCID AND @Handle_ID = ID
    

    然后你更新

    UPDATE ITS2_UserNames
    SET AupIp = @AupIp
    WHERE @Customer_ID = TCID AND @Handle_ID = ID
    

    SELECT * FROM #temp
    

    你可以用它来做这个 OUTPUT

    DECLARE @tempTable TABLE ( ID INT );
    

    然后你用 输出

    UPDATE ITS2_UserNames  
    SET AupIp = @AupIp  
    OUTPUT INSERTED.ID
    INTO @tempTable
    WHERE @Customer_ID = TCID AND @Handle_ID = ID
    
        3
  •  2
  •   Harmeet Singh Bhamra    5 年前

    这里要提到的是,若您想在变量中获取受影响行的主键,那个么可以使用OUTPUT子句将其放入表变量中。执行以下语句,例如。。。

    创建表ItemTable(ID INT IDENTITY(1,1),Model varchar(500)NULL,Color varchar(50)NULL)

    插入到ItemTable(型号、颜色)

    插入到ItemTable(型号、颜色)

    插入到ItemTable(型号、颜色)

    声明@LastUpdateID表(ItemID INT null)

    更新项目表 集合模型='abc' 插入的输出.ID 进入@LastUpdateID 其中颜色=‘红色’

    从@LastUpdateID中选择ItemID

    enter image description here

        4
  •  -3
  •   pauloya    15 年前

    Select IdColumn
    From ITS2_UserNames
    WHERE @Customer_ID = TCID AND @Handle_ID = ID