phpMyAdmin
 sql >> база данни >  >> Database Tools >> phpMyAdmin

Не може да се създаде TRIGGER от друга съхранена рутина -- Какво е друга съхранена рутина?

Спусъкът, който показваш по-горе, е добре.

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



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. MySQL LOAD DATA LOCAL INFILE импортира само един ред

  2. Добавете ред към JTable и базата данни (phpMyAdmin)?

  3. phpMyAdmin отдалечен достъп

  4. как мога да добавя нова колона, която отчита броя на редовете като сериен номер

  5. 1044 - Отказан достъп за потребител 'user'@'localhost' до база данни 'db'