此处我尝试仅在将review_table中的状态更新为2 后,在更新review_table 后插入 payment_table。但是运行此触发后出现错误,即:
1064 - 您的SQL语法出错;查看与
的MySQL服务器版本对应的手册
触发器是:
CREATE TRIGGER payment_details_trig AFTER UPDATE ON review_table
FOR EACH ROW
BEGIN
IF NEW.status=2
INSERT INTO payment_table(paper_id, payment_mode, payment_refNo, payment_image,status)
VALUES (0,0,0,0,0);
END IF;
END;
答案 0 :(得分:1)
除了失踪的THEN
之外,什么都没有。您可能需要分隔符语句:
DELIMITER $$
CREATE TRIGGER payment_details_trig AFTER UPDATE ON review_table
FOR EACH ROW
BEGIN
IF NEW.status = 2 THEN
INSERT INTO payment_table(paper_id, payment_mode, payment_refNo, payment_image,status)
VALUES (0, 0, 0, 0, 0);
END IF;
END;
$$
DELIMITER ;
答案 1 :(得分:1)
1064
中的SQL
问题出现在以下四种情况中:
1)使用保留字:
MySQL
的每个版本都有自己的reserved words
列表。这些是用于特定目的或在MySQL
引擎中执行特定功能的单词。如果您尝试使用其中一个reserved words
,您将收到1064错误。要解决此问题,您需要用反引号“`”包围该单词。
2)缺少数据: 有时数据库中的数据丢失。当查询需要此数据时,这可能会导致问题。
3)错误或缺少命令:
1064错误的最常见原因之一是SQL
语句使用错误或缺少的命令。
4)不推荐使用的命令:
一些命令deprecated
(计划删除但仍允许一段时间)最终会过时。这意味着该命令在SQL
语句中不再有效。
在您的情况下,第三个选项是答案是您的错误的原因。您错过了在THEN
之后撰写IF
。