我无法从插入中捕获感兴趣的ID并在存储过程的exec中使用它

问题描述 投票:0回答:1

我无法使用inserted伪表中的参数在触发器中执行过程。

ALTER TRIGGER [dbo].[Restauracja]
ON [dbo].[RezerwacjaPozycje] 
AFTER INSERT, UPDATE, DELETE
AS 
BEGIN 
    DECLARE @ID INT;

    SELECT IdReservation = @ID 
    FROM INSERTED       

    EXEC SumOrderPositions @ID;
END

如果我将@id更改为f.e. 9.它正确地更新了我想要的IdReservation 9号。

sql sql-server triggers
1个回答
0
投票

如果只插入一行,则只需按正确的顺序进行分配:

BEGIN 
    DECLARE @ID  int;
    SELECT @ID = IdReservation
    FROM INSERTED;    

    EXEC SumOrderPositions @ID;
END;

但是,这是一个等待发生的错误。相反,您可能希望使用游标,使用其他机制循环遍历inserted中的行,或者检查inserted中只有一行。我不确定你想要的确切逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.