我需要在 SQLAlchemy中创建一个 BEFORE INSERT触发器:
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-workbench 中执行代码工作得很好,但在我的实际代码中执行时会呈现“您的 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...附近”)
我很确定我错误地使用了 DELIMITER。在这种情况下正确的语法是什么/如何解决我的问题?