обновить запись сразу после нового автоинкремента - PullRequest
0 голосов
/ 05 октября 2019

У меня есть две таблицы, как показано ниже

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, созданного автоматически, так как его автоинкремент

1 Ответ

0 голосов
/ 05 октября 2019

в качестве комментария: - почему вместо добавления второго обновления не помещать его в одну и ту же вставку?:

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

?

  • или, (не уверен, какойsql используется здесь), используйте SCOPE_IDENTITY (), чтобы получить значение UID для последней вставленной строки, затем используйте его для своего обновления
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...