Ich möchte den Trigger erstellen, der das Einfügen in die Reservierungstabelle von Flügen ( numflights
) verhindert, die nicht vorhanden sind.
Tables
----------------------------------------------
flights(numflight, origine, destination, dep, arr)
airports(code, city, country)
reservation(people, numflight, date_travel)
Die Spalten origine
und destination
enthalten Flughafencodes.
Antworten:
Das folgende Beispiel basiert auf einer Fehlerbehebungsmethode mit Triggern in Triggern aus Kapitel 11, Seiten 254-256 des Buches MySQL Stored Procedure Programming unter der Überschrift 'Validieren von Daten mit Triggern' :
Wenn eine andere Validierung durchgeführt werden muss, befolgen Sie dieselbe Fehlerbehebungsmethode !!!
AKTUALISIEREN
Der Grund, warum das Buch vorschlägt, den Trigger auf diese Weise zu verhindern, liegt in der Tatsache begründet, dass in der MySQL Stored Procedure Language SIGNAL nicht in der Sprache implementiert war (SIGNAL ist natürlich ANSI-Standard).
Die Autoren des Buches haben Workarounds erstellt, indem sie SQL-Anweisungen aufgerufen haben, die syntaktisch korrekt sind, aber zur Laufzeit fehlschlagen. Die Seiten 144-145 (Kapitel 6: Fehlerbehandlung) des Buches enthalten diese Beispiele zum direkten Verhindern einer gespeicherten Prozedur (Beispiel 6-18) oder durch SIGNAL-Emulation (Beispiele 6-19 und 6-20).
Leider kann die SIGNAL-Emulation aus den Beispielen 6-19 und 6-20 nicht in Triggern durchgeführt werden. Die Autoren des Buches verwendeten die Technik in Beispiel 6-18, um Auslöser auf den Seiten 254-256 zu verhindern. Deshalb muss der Vorschlag des Buches der richtige Weg sein.
quelle
Warum nicht einfach INSERT-Rechte entfernen?
quelle