触发器中的 MySQL IF 语句 - ELSE 不执行任何操作
Posted
技术标签:
【中文标题】触发器中的 MySQL IF 语句 - ELSE 不执行任何操作【英文标题】:MySQL IF statement in a trigger- ELSE don't do anything 【发布时间】:2013-04-11 07:54:45 【问题描述】:我正在尝试在 mysql 中构建一个触发器,该触发器将在将新行插入表后运行。 如果检测到错误,那么我想将该触发器写入表。否则,我不想将错误写入表。我想尽量避免添加无穷无尽的空白行。
这是我的代码:
CREATE
TRIGGER character_validation4 AFTER INSERT
ON address FOR EACH ROW
Begin
IF(New.city REGEXP '^[^a-zA-Z0-9]')
THEN
INSERT INTO errorlog (city, mainprocessid) Values("There is an error with the city", New.ID));
END
但我看到最后一个括号有错误。
有人可以帮忙吗?谢谢
【问题讨论】:
【参考方案1】:您在 New.ID 之后似乎有一个额外的“)”。试试这个方法
CREATE TRIGGER character_validation4
AFTER INSERT ON address FOR EACH ROW Begin
IF(New.city REGEXP '^[^a-zA-Z0-9]') THEN INSERT INTO errorlog (city, mainprocessid)
Values("There is an error with the city", New.ID);
END IF;
END;
【讨论】:
谢谢,但现在我看到“Unexpected End_of_Input Expecting ';'”和“unexpected end” 添加一个 END IF 并放一个 ;在结束语句之后【参考方案2】:DELIMITER \\
CREATE
TRIGGER character_validation4 AFTER INSERT
ON address FOR EACH ROW
Begin
IF(New.city REGEXP '^[^a-zA-Z0-9]')
THEN
INSERT INTO errorlog (city, mainprocessid) Values("There is an error with the city", New.ID);
END IF;
END \\
DELIMITER ;
【讨论】:
谢谢,但现在我看到“Unexpected End_of_Input expecting ';'”和“unexpected end”和“unexpected end” 我注意到了 phpmyadmin 标签,所以我假设您在其中输入了这个。将DELIMITER //
添加到查询的开头(create
之前)并在末尾添加DELIMITER ;
。编辑:还在最后一个END
之后添加//
。查看我的答案的修改。以上是关于触发器中的 MySQL IF 语句 - ELSE 不执行任何操作的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL数据库重点:流程控制语句自定义函数存储过程触发器事件视图