ВСТАВИТЬ ТРИГГЕР ПОСЛЕ ОБНОВЛЕНИЯ ДРУГОЙ ТАБЛИЦЫ - PullRequest
0 голосов
/ 28 апреля 2019

Есть 2 стола заказов и пицца.Мне нужно создать триггер update_order_pizza, который будет вставлять строку в таблицу order_pizza после вставки новой строки в порядке таблицы (или при обновлении строки).

Код под триггером работает при запуске в SQL, но я непосмотрим, что изменится в таблице order_pizza после того, как я вставил строку в порядок.

CREATE DEFINER=`root`@`localhost` TRIGGER `update_order_pizza` AFTER INSERT ON `orders` FOR EACH ROW BEGIN
set @orderid = (select max(order_id) from orders);
set @pizzaid = (select max(pizza_id) from pizza);

insert into order_pizza(order_id,pizza_id)
values(@orderid,@pizzaid);
END

Я ожидаю увидеть следующий

Если я вставлю новый заказ, скажем, скажем, id заказа = 36 в таблице order_pizzaдолжна быть вставлена ​​новая запись (36,64)

1 Ответ

0 голосов
/ 28 апреля 2019

Ваш код должен использовать переменную new для ссылки на строки. Кроме того, ваши таблицы должны определять идентификаторы как автоинкремент.

Итак, код должен выглядеть примерно так:

create trigger `update_order_pizza` after update on `orders` 
for each row
begin

    insert into order_pizza (order_id)
        values (new.order_id);

end;

В качестве альтернативы pizza_id может быть в таблице orders, и вы можете указать:

    insert into order_pizza (order_id, pizza_id)
        values (new.order_id, new.pizza_id);
...