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 を間違って使用していると確信しています。このコンテキストで正しい構文は何ですか / 問題を解決するにはどうすればよいですか?