tôi cần phải tạo ra một TRƯỚC INSERT trigger trong SQLAlchemy:DELIMITER/Tạo ra một kích hoạt trong 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 ;
Thực thi mã trong mysql-workbench làm việc tốt, nhưng ám một "Bạn có một lỗi trong SQL của bạn cú pháp" ngoại lệ khi thực hiện trong mã thực tế của tôi:
from sqlalchemy.sql.expression import text
connection = db.session.connection()
text(..., connection).execute();
Chạy SELECT SLEEP(1)
, CREATE TABLE test (id INT)
hoặc thậm chí USE some_db
công trình tốt.
này các thông báo lỗi mysql tôi nhận được:
(1064, "Bạn có một lỗi trong cú pháp SQL của bạn; ... gần 'DELIMITER | \ nTạo TRIGGER set_rank BE ...")
Tôi khá chắc chắn rằng tôi sử dụng DELIMITER không chính xác. Cú pháp đúng trong ngữ cảnh này là gì/Làm cách nào để khắc phục sự cố của tôi?
Câu lệnh "DELIMETER" này có mục đích gì? Chỉ cần loại bỏ nó. – Gerrat