看看这段代码:
DELIMITER $$ DROP TRIGGER IF EXISTS `after_product_insert` $$ CREATE TRIGGER `after_product_insert` AFTER INSERT ON `products` FOR EACH ROW UPDATE `categories` SET product_count=product_count+1 where id = NEW.category_id; END$$
这运行正常,但显示一些错误。这是输出:
Query OK, 0 rows affected (0.16 sec) ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END' at line 1
因此,即使创建了触发器,脚本(包含此触发器)也会因为错误而死亡。这可能很简单但不知何故我错过了这一点。帮助任何人?
答案 0 :(得分:4)
这是一个两个表触发器,因此 id
可能不明确。将表名添加到其中。将表名添加到每个字段引用都不会有什么坏处。
别介意。 BEGIN
之前没有UPDATE
。对于要执行的语句,FOR
语句似乎期望BEGIN
和END
。
DELIMITER $$
DROP TRIGGER IF EXISTS `after_product_insert` $$
CREATE TRIGGER `after_product_insert`
AFTER INSERT ON `products`
FOR EACH ROW
BEGIN
UPDATE `categories`
SET product_count=product_count+1
WHERE id = NEW.category_id;
END$$