2016-06-22 4 views
0

Ich habe eine Tabelle namens booking, die hat ein start_date, expiry_date und course_id Feld und eine andere Tabelle namens course, die die duration in Monaten speichern.Wie würde ich einen MySQL-Trigger erstellen, der basierend auf Informationen in anderen Tabellen aktualisiert wird?

Was ich tun möchte ist, wann immer eine Buchung gemacht wird, um automatisch das Ablauffeld basierend auf dem gewählten Kurs festzulegen. Also, wenn course_id 5 ausgewählt wurde, und es hat eine Dauer von 12 Monaten, dann, wenn die Buchung eingefügt oder aktualisiert wird es die duration bekommen, fügen Sie das zu start_date und aktualisieren Sie dann expiry_date entsprechend.

Irgendwelche Gedanken? Ich weiß, dass MySQL-Trigger das tun werden, aber ich habe wirklich keine Ahnung, wo ich anfangen soll, sie zu konstruieren und was ich tatsächlich mit ihnen machen kann.

+1

imo, anstatt Auslöser zu versuchen, sofort zu schreiben. 1) Schreiben und debuggen Sie die Logik, um all dies in der ersten Instanz als separate Skripte auszuführen. 2) Dann "refactor" in Funktionen, Verfahren, Ansichten usw. 3) Dann entscheiden, ob Sie die Logik in Trigger setzen können? Warum? 1) Sie wissen, dass die ganze Logik funktioniert! Wenn Sie also Schritt 2) tun, muss es sich um einen "Übertragungsfehler" handeln, nicht um einen logischen Fehler. Schritt 3) Sie verstehen den Prozess vollständig und sehen, was bei Triggern nicht funktioniert. Bitte überspringen Sie keine oder die drei Schritte. So mache ich das; - / –

Antwort

-1

Angenommen, Sie haben Zugriff darauf, müssten Sie eine benutzerdefinierte Funktion innerhalb der Funktion auslösen, die die anfänglichen Buchungsinformationen in die Datenbank schreibt.

Oder Sie können die vorhandene Funktion bearbeiten, um das Ablaufdatum hinzuzufügen, während die Buchung hinzugefügt wird.

EDIT: Ich habe bemerkt, dass Sie MySql Trigger verwenden möchten verwenden:

AFTER INSERT 

http://www.techonthenet.com/mysql/triggers/after_insert.php

Verwandte Themen