有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)
答案 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);