Il trigger che mostri sopra va bene.
modifica: Quando crei un trigger nella GUI di phpMyAdmin, devi solo inserire il corpo del trigger nella Definizione riquadro, ovvero la parte BEGIN...END .
Questo perché phpMyAdmin cercherà di essere intelligente e scrivere l'intestazione del trigger per te in base agli altri elementi che inserisci (nome, tabella, ora, evento).
Ecco il modo giusto per definire un trigger in phpMyAdmin:

Se scrivi CREATE TRIGGER... header all'interno del corpo, confonderà MySQL perché vedrà CREATE TRIGGER... CREATE TRIGGER... BEGIN...END . Questo fa pensare a MySQL che stai definendo un trigger la cui prima istruzione è CREATE TRIGGER .
Come problema collaterale della tua domanda originale, suggerirei alcune modifiche nel corpo del trigger:
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
Le modifiche:
- Riferimento
NEW.IDinvece diDelivery.ID. - Usa SQL-92
JOINsintassi anziché SQL-89 "stile virgola" join. - Usa
UPDATEmulti-tabella con join, invece diEXISTScon subquery correlata. - Utilizza le virgolette singole per le stringhe invece delle virgolette doppie.
- Termina l'
UPDATEfrase con un punto e virgola.