AFTER INSERT触发器在将数据插入初始表后将数据插入到不同的表中

时间:2016-07-30 18:39:41

标签: mysql database triggers workbench

您好,并提前感谢您提供的任何帮助!

我为电子产品在线商店创建了一个非常简单的数据库。

在其他表中,我有一个tbl_orders用于手动放置订单(用户手动插入product_id,单位数,payment_details_id等),我想在tbl_orders上发送一个AFTER INSERT触发器来发送order_id(是tbl_order的PK)到一个名为purchase_history的表。

表purchase_history还有一个purchase_date列。它的PK是purchase_id,order_id是FK。

我对触发器不熟悉,但是我已经在触发器内尝试了各种简单查询而没有运气,尽管我得到的错误正在变得更好"如果有人可以称之为。

我最后一次尝试是这样的:

  CREATE DEFINER = CURRENT_USER TRIGGER      `onlineshop`.`tbl_orders_AFTER_INSERT` AFTER INSERT ON `tbl_orders` FOR EACH ROW
  BEGIN

  INSERT INTO purchase_history (order_id)
  VALUES (NEW.order_id);

  INSERT INTO purchase_history ( purchase_date )

  VALUES (purchase_date = NOW());


  END

我正在使用MYSQL Workbench,这很棒,但有时也会有些麻烦或混乱。

1 个答案:

答案 0 :(得分:1)

CREATE TRIGGER `tbl_orders_AFTER_INSERT` AFTER INSERT ON `tbl_orders` 
FOR EACH ROW BEGIN

INSERT INTO purchase_history (order_id, purchase_date) VALUES (NEW.order_id, NOW());

END;

这样你的插入会更有意义,因为你想要历史中同一行中的两个数据,我猜。

如果需要DEFINER系列:

CREATE DEFINER = CURRENT_USER 
TRIGGER stuff.`tbl_orders_AFTER_INSERT` AFTER INSERT ON `tbl_orders` 
FOR EACH ROW 
INSERT INTO purchase_history (order_id, purchase_date) VALUES (NEW.order_id, NOW());

我尝试了一些东西,mysql似乎在创建触发器的同时不喜欢beginendDEFINER = ...。虽然触发器不需要BEGINEND,但是从语句中删除它们没有问题。