试图创建MySql触发器
CREATE TRIGGER updVisible AFTER UPDATE ON photos
FOR EACH ROW
BEGIN
IF NEW.Status = 2 THEN
UPDATE otherTable SET IsVisible=0 WHERE PID=NEW.PID
END IF;
END;但我错了:
您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以便在第6行使用接近'END IF‘的正确语法。
MySQL版本:5.1.41-社区我做错了什么?
UPD1。这没什么用
DELIMITER //
CREATE TRIGGER updVisible AFTER UPDATE ON photos
FOR EACH ROW
BEGIN
IF NEW.Status = 2 THEN
UPDATE otherTable SET IsVisible=0 WHERE PID=NEW.PID
END IF
END//
DELIMETER ;错误:
错误代码: 1064您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以便在第6行使用接近'END如果结束‘的正确语法。
我有根访问权并使用MySql Workbench 5.2.31CE
发布于 2011-01-28 17:40:16
这个在我的机器里工作!
mysql> DELIMITER //
mysql> CREATE TRIGGER test1 AFTER UPDATE ON test
-> FOR EACH ROW
-> BEGIN
-> IF NEW.itemId = '2' THEN
-> UPDATE test1 SET col1=0 WHERE col2=NEW.`value`;
-> END IF;
-> END//
Query OK, 0 rows affected (0.05 sec)
mysql> DELIMiTER ;
mysql> desc test;
+--------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| itemId | varchar(100) | YES | | NULL | |
| key | varchar(100) | YES | | NULL | |
| value | varchar(100) | YES | | NULL | |
+--------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> desc test1;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| col1 | varchar(100) | YES | | NULL | |
| col2 | varchar(100) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql>发布于 2011-01-28 17:29:40
它看起来像一个缺失的分号
PID=NEW.PID;发布于 2011-01-28 17:37:26
在phpMyAdmin中,可以在SQL窗口中创建触发器。
您可能必须将分隔符设置为类似于$$的内容,而不是默认的;。您可以很容易地从SQL窗口底部更改这一点。
此外,请确保使用END命令关闭触发器块-
DELIMITER $$
CREATE TRIGGER `tutorial`.`before_delete_carts`
BEFORE DELETE ON `trigger_carts` FOR EACH ROW
BEGIN
DELETE FROM trigger_cart_items WHERE OLD.cart_id = cart_id;
END $$
DELIMITER ;https://stackoverflow.com/questions/4831113
复制相似问题