DELIMITER / Создание триггера в SQLAlchemy

Мне нужно создать триггер 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 неправильно. Каков правильный синтаксис в этом самом контексте / Как решить мою проблему?

8
задан kay 4 May 2012 в 20:56
поделиться