2016-07-30 13 views
1

Hallo und vielen Dank im Voraus für jede Hilfe gegeben!NACH EINFÜGEN Trigger zum Einfügen von Daten in eine andere Tabelle nach dem Einfügen in die ursprüngliche Tabelle

Ich habe eine sehr einfache Datenbank für einen Elektronik-Online-Shop erstellt.

Unter den anderen Tabellen habe ich eine Tbl_Orders für Aufträge manuell platziert (Benutzer fügt die Produkt_ID, Anzahl der Einheiten, payment_details_id usw. manuell) und ich möchte einen AFTER INSERT-Trigger auf tbl_orders, die die order_id (senden würde) Das ist Tbl_order PK) zu einer Tabelle namens Purchase_History.

Die Tabelle purchase_history hat auch eine Spalte purchase_date. Es ist PK ist purchase_id, mit order_id als FK.

Ich bin nicht vertraut mit Triggern, aber ich habe alle möglichen einfachen Abfragen innerhalb eines Triggers ohne Glück versucht, obwohl die Fehler, die ich bekommen habe, "besser" wurden, wenn man es so nennen könnte.

Der letzte Versuch ich hatte, war dies:

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 

Ich bin mit MySQL Workbench, das ist toll, aber auch manchmal etwas verwirrend oder Buggy.

+0

Was war der Fehler beim letzten Versuch? – Philipp

Antwort

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; 

Auf diese Weise Ihr Einsatz würde mehr Sinn machen, wie Sie beide der Daten in der gleichen Zeile in der Geschichte wollen würde, würde ich raten.

Wenn die DEFINER-Linie benötigt:

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()); 

ich einige Dinge ausprobiert, scheint mysql nicht begin, end und DEFINER = ... zugleich zu mögen, wenn Trigger zu schaffen. Obwohl BEGIN und END nicht mit Triggern benötigt werden, gibt es kein Problem, sie aus Ihrer Anweisung zu entfernen.