我想触发哪个功能是 - 如果更改了价格值,则在更新产品表之前将该行复制到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行
答案 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 ;