我正在尝试自动化我的触发器进程,这样我就不必为我想要使用的每个表手动创建触发器。不幸的是,我收到一条错误,说有语法错误。
这是我的代码
$updateTrigger = "DROP TRIGGER IF EXISTS {$table}Update
CREATE TRIGGER {$table}Update AFTER UPDATE ON $table
FOR EACH ROW
BEGIN
DECLARE N DATETIME;
SET N = now();
INSERT INTO StagesHistory (Stage, StageID, Date, Action)
VALUES ('$table', NEW.ID, N, ?);
END";
$ut = $dbh->prepare($updateTrigger);
$ut->execute(array($update));
$error = $ut->errorInfo();
评估$error
会返回以下错误消息:
您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在'CREATE TRIGGER之后使用正确的语法翻译更新翻译后翻译 对于第2行的每个R'
我无法弄清楚它在说什么错误。有什么问题,我该如何解决?
答案 0 :(得分:3)
DROP TRIGGER ...
和CREATE TRIGGER ...
是两个单独的陈述。您至少需要用;
分隔它们,可能在单独的查询中执行它们。
答案 1 :(得分:1)
不是分号丢失了吗?它应该是:DROP TRIGGER IF EXISTS {$table}Update;
。