0

我必须从该表的备份版本中恢复该表。然后我去重新创建触发器。我无法重新创建一个。我已经看过一些例子,说明这种触发器应该如何看起来没有任何东西在盯着我看。当我单击旧触发器上的“更改”以保存它时,我从 phpmyadmin 中显示的代码中复制了它。我以为那是万无一失的!

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 5 行的 '' 附近使用正确的语法

CREATE TRIGGER `trig_parts_price_AfterUpdate` AFTER UPDATE ON `parts`
    FOR EACH ROW BEGIN
       IF (NEW.cost <> OLD.cost || NEW.price <> OLD.price || NEW.QtyInStock <> OLD.QtyInStock) THEN
          INSERT INTO `inv_hist_simple` (sku, cost, price, QtyInStock, change_date) 
          VALUES(OLD.sku_m, NEW.cost, NEW.price, NEW.QtyInStock, NOW());
    END IF;
END;
4

1 回答 1

2

将此行放在您的代码上方:

DELIMITER $$

并将代码的最后一行更改为

END $$

然后在最后添加这一行:

DELIMITER ;

否则会;告诉服务器,触发器的代码在您的插入语句之后完成,这会导致语法错误。

所以它基本上应该是这样的:

DELIMITER $$
CREATE TRIGGER `trig_parts_price_AfterUpdate` AFTER UPDATE ON `parts`
    FOR EACH ROW BEGIN
       IF (NEW.cost <> OLD.cost || NEW.price <> OLD.price || NEW.QtyInStock <> OLD.QtyInStock) THEN
          INSERT INTO `inv_hist_simple` (sku, cost, price, QtyInStock, change_date) 
          VALUES(OLD.sku_m, NEW.cost, NEW.price, NEW.QtyInStock, NOW());
    END IF;
END $$
DELIMITER ;
于 2012-05-24T22:02:09.950 回答