在更新另一个表后插入触发器

时间:2019-04-28 09:12:01

标签: sql triggers insert mariadb

有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

我希望看到下一个

如果我插入新订单,假设order_pizza表中的订单id = 36应该插入新记录(36,64)

1 个答案:

答案 0 :(得分:0)

您的代码应使用new变量来引用行。另外,您的表应将ID定义为自动递增。

因此,代码应更像这样:

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);