2016-07-30 163 views
1

您好,感谢您提供任何帮助!AFTER INSERT在将数据插入到初始表中后,触发器将数据插入到其他表中

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

在其他表中,我有一个手动放置订单的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工作台,这是伟大的,但同时也有一些轻微越野车或混淆。

+0

最后一次尝试的错误是什么? – Philipp

回答

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的似乎不喜欢begin,同时endDEFINER = ...创建触发器时。尽管触发器不需要BEGINEND,所以从语句中删除它们没有任何问题。