Я не могу поймать интересующий идентификатор из вставленного и использовать его в exec хранимой процедуры

0

Я не могу выполнить процедуру в моем триггере с параметром из 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 на fe 9. это правильно обновляет то, что я хочу для IdReservation № 9.

  • 0
    Вы получаете ошибку? В чем проблема?
  • 0
    Там нет никакого типа ошибки. Это просто ничего не меняет, как никогда.
Теги:
sql-server
triggers

1 ответ

0

Если вы вставляете только одну строку, вы можете просто сделать назначение в правильном порядке:

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

    EXEC SumOrderPositions @ID;
END;

Тем не менее, это ошибка, ожидающая своего появления. Вместо этого вы можете захотеть использовать курсор, перебрать строки, inserted с помощью какого-либо другого механизма, или проверить, что inserted только одна строка. Я не уверен, какая именно логика вам нужна.

  • 0
    вау, это сработало. Но я не вижу большой разницы между DECLARE @ID int; Выберите IdReservation = @ ID FROS INSERTED и ваше рабочее решение: D.
  • 1
    @WexusNexus Разница в том, что ваше задание задом наперед. IdReservation=@ID не совпадает с @ID=IdReservation
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню