我对MySQL Trigger sintax相当陌生,我遇到了一个问题,我在任何地方都找不到明确的答案。
我有一个非常简单的 IF 语句,如果满足一个 OR 另一个条件,它会进入 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
要测试差异,请使用<>运算符。
BEGIN
IF NEW.field1 <> OLD.field1 OR NEW.field2 <> OLD.field2 THEN
#action happens here
END IF;
END