MYSQL:触发错误
MYSQL : Getting error in TRIGGER
我想要触发哪个功能 - 在产品更新之前 table 如果价格值发生变化,则将该行复制到 product_log table。我想要此功能来管理产品价格日志。
这是我的产品table
# Name Type
1 id int(11)
2 name varchar(100)
3 price bigint(20)
4 created_date datetime
这是我的product_logtable
# 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 行
附近使用的正确语法
您需要更改分隔符。否则触发器定义在第一个分号处结束,这会使它不完整。
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 ;
我想要触发哪个功能 - 在产品更新之前 table 如果价格值发生变化,则将该行复制到 product_log table。我想要此功能来管理产品价格日志。
这是我的产品table
# Name Type
1 id int(11)
2 name varchar(100)
3 price bigint(20)
4 created_date datetime
这是我的product_logtable
# 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 行
附近使用的正确语法您需要更改分隔符。否则触发器定义在第一个分号处结束,这会使它不完整。
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 ;