更新后的MySQL错误

时间:2015-09-16 12:08:21

标签: mysql

此处我尝试仅在将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;

2 个答案:

答案 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