Мне нужно создать триггер BEFORE INSERT в SQLAlchemy:
DELIMITER |
CREATE TRIGGER set_rank BEFORE INSERT ON authors
FOR EACH ROW BEGIN
IF NEW.rank = 0 THEN
SET NEW.rank = (SELECT IFNULL(MAX(a.rank),0) + 1
FROM authors AS a
WHERE a.id = NEW.pub_id);
END IF;
END |
DELIMITER ;
Выполнение код в рабочей среде mysql -работает просто отлично, но отображает исключение «У вас есть ошибка в синтаксисе SQL» при выполнении в моем фактическом коде:
from sqlalchemy.sql.expression import text
connection = db.session.connection()
text(..., connection).execute();
Запуск SELECT SLEEP(1)
, CREATE TABLE test (id INT)
или даже USE some_db
работает просто отлично.
Это сообщение об ошибке mysql, которое я получаю:
(1064, "У вас есть ошибка в синтаксисе SQL;... около 'DELIMITER |\nCREATE TRIGGER set _rank BE...")
I я совершенно уверен, что использую DELIMITER неправильно. Каков правильный синтаксис в этом самом контексте / Как решить мою проблему?