您好,并提前感谢您提供的任何帮助!
我为电子产品在线商店创建了一个非常简单的数据库。
在其他表中,我有一个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,这很棒,但有时也会有些麻烦或混乱。
答案 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似乎在创建触发器的同时不喜欢begin
,end
和DEFINER = ...
。虽然触发器不需要BEGIN
和END
,但是从语句中删除它们没有问题。