Der Trigger, den Sie oben zeigen, ist in Ordnung.
Bearbeiten: Wenn Sie einen Trigger in der GUI von phpMyAdmin erstellen, müssen Sie nur den Hauptteil des Triggers in die Definition eingeben Bereich, also der Teil BEGIN...END .
Dies liegt daran, dass phpMyAdmin versuchen wird, clever zu sein und den Trigger-Header basierend auf den anderen von Ihnen eingegebenen Elementen (Name, Tabelle, Zeit, Ereignis) für Sie zu schreiben.
So definieren Sie einen Trigger in phpMyAdmin richtig:

Wenn Sie den CREATE TRIGGER... schreiben Kopfzeile innerhalb des Körpers, wird es MySQL verwirren, weil es CREATE TRIGGER... CREATE TRIGGER... BEGIN...END sehen wird . Dadurch denkt MySQL, dass Sie einen Trigger definieren, dessen erste Anweisung CREATE TRIGGER ist .
Als Nebenproblem zu Ihrer ursprünglichen Frage würde ich einige Änderungen im Hauptteil des Triggers vorschlagen:
CREATE TRIGGER Update_Last_Transit_Status AFTER INSERT ON Delivery
FOR EACH ROW
BEGIN
UPDATE Transportation
INNER JOIN Transit ON Transit.Transportation_ID = Transportation.ID
INNER JOIN Route ON Transit.ID = Route.Transit_ID
SET Transportation.Status = 'Dispatched'
WHERE Route.Delivery_ID = NEW.ID
AND Transportation.Status = 'In Branch';
END
Die Änderungen:
- Referenz
NEW.IDstattDelivery.ID. - Verwenden Sie SQL-92
JOINSyntax anstelle von SQL-89-Joins im "Komma-Stil". - Verwenden Sie
UPDATEfür mehrere Tabellen mit Joins stattEXISTSmit korrelierter Unterabfrage. - Verwenden Sie einfache Anführungszeichen für Zeichenfolgen anstelle von doppelten Anführungszeichen.
- Beenden Sie das
UPDATEAnweisung mit einem Semikolon.