Spust, który pokazujesz powyżej, jest w porządku.
edytuj: Kiedy tworzysz wyzwalacz w GUI phpMyAdmin, wystarczy wprowadzić treść wyzwalacza w Definicji okienko, czyli część BEGIN...END .
Dzieje się tak, ponieważ phpMyAdmin będzie starał się być sprytny i napisać dla ciebie nagłówek wyzwalacza na podstawie innych wprowadzonych elementów (nazwa, tabela, godzina, wydarzenie).
Oto właściwy sposób zdefiniowania wyzwalacza w phpMyAdmin:

Jeśli napiszesz CREATE TRIGGER... nagłówek wewnątrz ciała, zmyli MySQL, ponieważ zobaczy CREATE TRIGGER... CREATE TRIGGER... BEGIN...END . To sprawia, że MySQL myśli, że definiujesz wyzwalacz, którego pierwszą instrukcją jest CREATE TRIGGER .
Jako kwestię poboczną w twoim pierwotnym pytaniu sugeruję pewne zmiany w treści wyzwalacza:
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
Zmiany:
- Odniesienie
NEW.IDzamiastDelivery.ID. - Użyj SQL-92
JOINskładnia zamiast sprzężeń w stylu przecinka SQL-89. - Użyj wielu tabel
UPDATEze złączeniami, zamiastEXISTSze skorelowanym podzapytaniem. - Użyj pojedynczych cudzysłowów dla ciągów zamiast podwójnych cudzysłowów.
- Zakończ
UPDATEoświadczenie ze średnikiem.