Спусъкът, който показваш по-горе, е добре.
редактиране: Когато създавате тригер в графичния интерфейс на phpMyAdmin, трябва само да въведете тялото на тригера в Дефиниция панел, с други думи частта BEGIN...END .
Това е така, защото phpMyAdmin ще се опита да бъде умен и да напише заглавката на тригера вместо вас въз основа на другите елементи, които въвеждате (име, таблица, час, събитие).
Ето правилния начин да дефинирате тригер в phpMyAdmin:

Ако напишете CREATE TRIGGER... заглавка вътре в тялото, това ще обърка MySQL, защото ще види CREATE TRIGGER... CREATE TRIGGER... BEGIN...END . Това кара MySQL да мисли, че дефинирате тригер, чийто първи израз е CREATE 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
Промените:
- Справка
NEW.IDвместоDelivery.ID. - Използвайте SQL-92
JOINсинтаксис вместо SQL-89 "стил на запетаята" се присъединява. - Използвайте
UPDATEза няколко таблици със съединения, вместоEXISTSс корелирана подзаявка. - Използвайте единични кавички за низове вместо двойни кавички.
- Прекратете
UPDATEизявление с точка и запетая.