MYSQL触发器语法-缺少分号

4

我从MS SQL背景相对较新地接触MYSQL。请问有人能指出我在这里为什么会出现语法错误吗?我确定我一定做错了某些非常明显的事情,但我就是看不出来:

我在第8行遇到了一个缺少分号的语法错误:

CREATE TRIGGER trg_InsertProductWatchListPriceHistory
AFTER UPDATE
ON ProductWatchlist FOR EACH ROW
BEGIN
INSERT INTO ProductWatchListPriceHistory 
(ProductWatchlistID,Price) 
VALUES  
(ProductWatchlistID,New.ProductPrice);
END;

非常感谢您的帮助。

3个回答

12

你需要将默认分隔符更改为除了 ; 之外的其他字符。否则,你的定义会在第一个 ; 处结束,导致其不完整。

delimiter |
CREATE TRIGGER trg_InsertProductWatchListPriceHistory
AFTER UPDATE
ON ProductWatchlist FOR EACH ROW
BEGIN
   INSERT INTO ProductWatchListPriceHistory (ProductWatchlistID, Price) 
   VALUES (New.ProductWatchlistID, New.ProductPrice);
END
|
delimiter ;

谢谢!我猜想可能是这样。 - Giles Hunt

1
如果使用MySQL Workbench,则应在表设计选项下使用编辑器的“创建触发器”来避免在之前和之后更改分隔符。

1
请查看此bash 脚本 以生成更新触发器。 该脚本需要数据库名称和表名称。 在使用此脚本时,请更新用户名和密码。

感谢您创建该脚本的努力,但这并没有回答原始问题。 - mjuarez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接