尝试创建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;
但是我得到了错误:
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 IF’ at
line 6
MySQL版本:5.1.41-community
我究竟做错了什么?
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 ;
错误:
Error Code: 1064 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 IF END’ at line 6
我具有root用户访问权限,并使用MySql Workbench 5.2.31 CE
解决方法:
这适用于我的机器!
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>