mysql触发器中的IF.THEN语句



我有两个表:

table A
 id | level_ID | col_m | col_n
table B
 id | prev_ID | cur_ID

CCD_ 1是从执行新插入以及更新的应用层操作的。另一方面,table B具有经由触发器仅在table Alevel_ID列上的更新之后插入的值:

DELIMITER |
DROP TRIGGER IF EXISTS trigger_happy|
CREATE TRIGGER trigger_happy AFTER UPDATE ON table A
FOR EACH ROW
  BEGIN
    IF level_ID!=NEW.level_ID THEN
    INSERT INTO table B (id, cur_ID, prev_ID)
    VALUES (OLD.id, NEW.level_ID, OLD.level_ID)
  END IF;
END;
DELIMITER ;

问题是,我打算只有在level_ID列发生更改时才触发触发器。其他列col_mcol_n上的更新不应触发触发器。

帮助我的触发器语句,因为它不能正常工作。

编辑

列的更新在应用程序逻辑中的不同时间进行。只有当level_ID更新完成时,我才需要触发。

非常简单,您将需要运行两个更新。

一个更新将需要level_ID列上的触发器。第二次更新将在没有关联触发器的情况下更新col_m和col_n列。

我找到的适合我的解决方案如下:

DELIMITER |
DROP TRIGGER IF EXISTS trigger_happy|
CREATE TRIGGER trigger_happy AFTER UPDATE ON table A
FOR EACH ROW
  BEGIN
    IF NEW.level_ID!=OLD.level_ID THEN /* edit conditional statement */
    INSERT INTO table B (id, cur_ID, prev_ID)
    VALUES (OLD.id, NEW.level_ID, OLD.level_ID)
  END IF;
END;
| /* add delimiter */
DELIMITER ;

此触发器将仅比较列level_ID上的更改,并在更新后激发。由于我使用phpmyadmin,所以我必须将分隔符指定为table A0。我把它留在默认的;

我希望这能帮助到别人。

相关内容

  • 没有找到相关文章

最新更新