【问题标题】:update record right after new auto increment在新的自动增量后立即更新记录
【发布时间】:2019-10-04 21:57:05
【问题描述】:

我有两张如下表

License Table(  int LID(PK)-Auto increment,
        int ProID,
        nvarchar(100) SK,
        int QTY,
        int LIS,
        int LIU
         )




Users Table(
        int UID(PK)-Auto increment,
        nvarchar(50) Username,
        int PID,
        int LID,
        nvarchar(100) SK,
        nvarchar(50) SN
        )

我有以下程序

procedure [dbo].[ADDUs]
(
@LID int,@username nvarchar(50),@sn nvarchar(50)
)
as
begin
INSERT INTO Users (LID, PID, SK)
SELECT LID, ProID, SK
FROM License
WHERE LID=@LID

Update Users set UserName = @username ,  sn=@sn, where LID=@LID
end

问题是每次您运行该程序时,它都会更新整个程序 LID=@LID 并且应该是 UID=@UID 的用户的记录

我的问题是如何以另一种方式修改此过程 只能为自动创建的新 UID 更新记录 它是自动递增的

【问题讨论】:

    标签: c# sql asp.net-mvc stored-procedures


    【解决方案1】:

    作为评论,: - 为什么不添加第二次更新,而不是将其全部放入同一个插入中?:

        ...
        INSERT INTO Users (LID, PID, SK, Username, Sn)
        SELECT LID, ProID, SK, @username, @sn
        FROM License
        WHERE LID=@LID
        ...
    

    ?

    • 或者,(不确定此处使用的是哪个 sql),使用 SCOPE_IDENTITY() 获取最后插入行的 UID 值,然后将其用于更新

    【讨论】:

    • 谢谢你,当我使用 SCOPE_IDENTITY() 时它可以工作,如下所示
    • 更新用户集 UserName = @username , sn=@sn, where UID=SCOPE_IDENTITY()
    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    相关资源
    最近更新 更多