mysql - MySQL触发器中的多个if语句

标签 mysql sql triggers phpmyadmin

如果您在一个 MySQL 触发器中有多个 if 语句,最好的方法是什么?

目前我的 SQL 看起来像这样:

IF NOT (NEW.status <=> OLD.status) THEN
  {my sql}

ELSEIF NOT (NEW.actual <=> OLD.actual) THEN
  {my sql}
END IF

乍一看这似乎可行。然而,我注意到当多个 (else)if 语句为真时,只有第一个被执行(就像在 PHP 中一样)。

我怎样才能只使用多个 if,而不一定是 elseif,以便执行多于 1 个语句?不可能用相同的操作创建多个触发器,至少 phpMyAdmin 显示的是这样。将多个 if 放在一个触发器中会导致错误。

最佳答案

想通了。我没有使用 phpMyAdmin 中的可视化 GUI 来创建触发器,而是使用了纯 SQL。

所以我使用了这个SQL:

delimiter //
create t1
after update
on my_table
for each row
    begin
        IF (NEW.status <> OLD.status) THEN
            {your sql}
        END IF;

        IF (NEW.actual <> OLD.actual) THEN
            {your sql}
        END IF;     
    end;//
delimiter ;

效果很好。在 phpMyAdmin GUI 中查找触发器时,我注意到这是因为必须添加 beginend;

关于mysql - MySQL触发器中的多个if语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14847702/

相关文章:

c# - 我可以通过 SQL Server 触发器调用 C# 函数吗?

php 函数不更新 mysql 数据库

mysql - 如何将我的 SQL 数据库附加到 “All in One WP Migration” 插件?另外,如何阻止我的域名倍增?

MySQL查询,从一个表中查找并插入到第二个表中

mysql - 找到平均电影长度最长的类型。数据库

python - 如何使用 PyGTK 事件处理程序手动触发事件?

php - MySQL 如果存在更新值,否则插入

php - 用于显示未分配到项目的员工的 MySQL 查询

mysql - 查询执行时间太长,无法加载

postgresql - 如何使用触发器来防止 PostgreSQL 中的重复记录?