我需要使用触发器在数据库中插入不同的数据,具体取决于先前对表进行的更新,尽管由于某些原因我一直会遇到语法错误。我检查了很多类似的问题,但是我的代码仍然不错。
触发:
DELIMITER $$
CREATE TRIGGER update_history
AFTER UPDATE ON product
FOR EACH ROW
BEGIN
IF OLD.amount - NEW.amount > OLD.amount THEN
INSERT INTO product_history (amount_of_new_products, product_id, user_id, updated_on, type_of_change)
VALUES ((NEW.amount - OLD.amount), NEW.id, NEW.user_id, now(), 'order');
ELSE
INSERT INTO product_history (amount_of_new_products, product_id, user_id, updated_on, type_of_change)
VALUES ((NEW.amount - OLD.amount), NEW.id, NEW.user_id, now(), 'update');
END$$
DELIMITER ;
错误:
您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以获取在第11行的''附近使用的正确语法
我该如何解决?
答案 0 :(得分:3)
您缺少END IF。
缩进代码,以便您轻松发现它。
DELIMITER $$
CREATE TRIGGER update_history
AFTER UPDATE ON product
FOR EACH ROW
BEGIN
IF OLD.amount - NEW.amount > OLD.amount THEN
INSERT INTO product_history (amount_of_new_products, product_id, user_id, updated_on, type_of_change)
VALUES ((NEW.amount - OLD.amount), NEW.id, NEW.user_id, now(), 'order');
ELSE
INSERT INTO product_history (amount_of_new_products, product_id, user_id, updated_on, type_of_change)
VALUES ((NEW.amount - OLD.amount), NEW.id, NEW.user_id, now(), 'update');
ENd IF;
END$$
DELIMITER ;