Как удалить строку с помощью триггера в oraclesql - PullRequest
0 голосов
/ 05 мая 2020

Я использую 2 таблицы, orders и order_items. Я пытаюсь создать триггер, который, когда я удаляю order_id из таблицы заказов, строка с тем же order_id будет удалена в таблице order_items.

CREATE OR REPLACE TRIGGER orders_order_items
AFTER DELETE ON orders
BEGIN
    DELETE FROM order_items WHERE order_items.order_id = orders.order_id;
END;

Может ли кто-нибудь объяснить мне, почему приведенный выше код не работа и как это надо писать?

1 Ответ

1 голос
/ 05 мая 2020

Вы неправильно указали ORDERS.ORDER_ID; должно было быть :old.order_id. Кроме того, он должен быть триггером на уровне строки, поскольку вы не можете ссылаться на значения :new или :old в триггерах на уровне операторов.

create or replace trigger orders_order_items
  after delete on orders
  for each row                                        -- this
begin
    delete from order_items where order_items.order_id = :old.order_id;
                                                         ----
                                                      -- this
end;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...