Спусъкът, който показваш по-горе, е добре.
редактиране: Когато създавате тригер в графичния интерфейс на 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
изявление с точка и запетая.