如果在MySQL触发器中
尝试创建MySql触发器如果在MySQL触发器中,mysql,triggers,Mysql,Triggers,尝试创建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服务器版本 在中使用接近'END IF'的正确语法 第
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服务器版本
在中使用接近'END IF'的正确语法
第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 ;
错误:
错误代码:1064您在中有错误
您的SQL语法;检查手册
对应于您的MySQL服务器
要使用的正确语法的版本
接近第6行的“如果结束,则结束”
我有根访问权限,并且使用MySql Workbench 5.2.31 CEU会遇到一些syntex问题..像这样使用
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//
它看起来像是丢失的分号
PID=NEW.PID;
在phpMyAdmin中,可以在SQL窗口中创建触发器 您可能需要将Delimeter设置为类似
$
的值,而不是默认值代码>。您可以从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 ;
这在我的机器里工作
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>
顺便说一句,您似乎忘记声明分隔符//
。添加了DELIMETER/,但我得到了相同的错误:错误代码:1064您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第行“END IF END”附近使用的正确语法6@Lari13拉里曼,在前面使用分隔符/
和分隔符代码>在上面编写的代码之后。没有帮助:(更新了我的问题尝试了“;”和“/”-相同的错误此答案实际上解释了问题,应该有更多的投票DELIMETER;
应该是分隔符;