2016-07-30 3 views
1

Здравствуйте, спасибо за любую помощь!ПОСЛЕ ВСТАВКИ Триггер для вставки данных в другую таблицу после вставки ее в начальную таблицу

Я создал очень простую базу данных для интернет-магазина электроники.

Среди других таблиц у меня есть tbl_orders для размещения заказов вручную (пользователь вставляет product_id, количество единиц, payment_details_id и т. Д. Вручную), и я хочу сделать триггер AFTER INSERT на tbl_orders, который отправит order_id (который представляет собой pK tbl_order) в таблицу, называемую buy_history.

В таблице buy_history также есть столбец purchase_date. Это PK - buy_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, который является большим, но и, иногда, немного Buggy или запутанным.

+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, end и DEFINER = ... в то же время при создании триггеров. Хотя BEGIN и END не нужны с триггерами, поэтому нет проблем с их удалением из вашего оператора.

Смежные вопросы