gpt4 book ai didi

MySQL 触发器 IF 语句 OR 在两个条件匹配时不起作用

转载 作者:行者123 更新时间:2023-11-30 21:47:58 25 4
gpt4 key购买 nike

我是 MySQL 触发器语法的新手,我遇到了一个问题,我无法在任何地方找到明确的答案。

我有一个非常简单的 IF 语句,它进入 IF,如果满足一个或另一个条件,但如果两个都满足则从不。

如果更新表的一个字段或其他字段发生变化,我想采取一些行动,但如果我更新两个字段,它就不起作用。

请记住,此触发器发生在表更新之后,这里是我的示例代码,以便于可视化:

BEGIN
IF NEW.field1 <=> OLD.field1 OR NEW.field2 <=> OLD.field2 THEN
#action happens here
END IF;
END

实际代码:

BEGIN
IF NEW.margem_consig <=> OLD.margem_consig OR NEW.margem_cartao <=> OLD.margem_cartao THEN
INSERT INTO historico_margem (idmatricula, margem, margem_cartao, margem_confiavel, margem_anterior_con, margem_anterior_car)
VALUES (NEW.idmatricula, NEW.margem_consig, NEW.margem_cartao, NEW.margem_confiavel, OLD.margem_consig, OLD.margem_cartao);
END IF;
END

所以,如果在更新时字段 1 和 2 都发生了变化,则永远不会满足条件,有人可以告诉我一些信息吗?

另外,如有拼写错误,请见谅

最佳答案

问题出在 <=> 运算符,将其替换为 != 并按预期工作。

感谢大家的宝贵时间!

更正示例代码:

BEGIN
IF NEW.field1 != OLD.field1 OR NEW.field2 != OLD.field2 THEN
#action happens here
END IF;
END

关于MySQL 触发器 IF 语句 OR 在两个条件匹配时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48563153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com