MYSQL:在TRIGGER中获取错误

时间:2015-04-10 10:36:34

标签: php mysql triggers

我想触发哪个功能是 - 如果更改了价格值,则在更新产品表之前将该行复制到product_log表。我希望此功能可以管理产品价格的日志。

这是我的产品

#   Name            Type    
1   id              int(11) 
2   name            varchar(100)
3   price           bigint(20)
4   created_date    datetime

这是我的 product_log

#   Name            Type    
1   id              int(11) 
2   name            varchar(100)
3   price           bigint(20)
4   created_date    datetime
5   is_procced      int(11)

这是我的触发器 -

CREATE TRIGGER pro_log BEFORE UPDATE ON product
 FOR EACH ROW
 BEGIN
     IF (OLD.price != NEW.price)
     THEN
        INSERT INTO product_log (SELECT *, 1 FROM product WHERE id = OLD.id);
     END IF;
 END;

我收到此错误 - #1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以获得在''附近使用的正确语法。第6行

1 个答案:

答案 0 :(得分:2)

您需要更改分隔符。否则,触发器定义将在第一个分号结束,这将使其不完整。

delimiter |
CREATE TRIGGER pro_log BEFORE UPDATE ON product
 FOR EACH ROW
 BEGIN
     IF (OLD.price != NEW.price)
     THEN
        INSERT INTO product_log 
        SELECT *, 1 FROM product WHERE id = OLD.id;
     END IF;
 END
|
delimiter ;