【发布时间】:2019-02-27 11:15:18
【问题描述】:
我的触发器在这里有问题。我的 IF 语句无法正常工作。我被卡住了,花了很多时间试图解决它。
这是我的代码:
CREATE DEFINER=`administrator`@`%` TRIGGER `My_Trigger` AFTER INSERT ON `my_first_table` FOR EACH ROW BEGIN
DECLARE A FLOAT default 0;
SET A = NEW.Data;
IF (A < 60.00 && NEW.Node <> 'XXX') OR (A < 60.00 && NEW.Node <> 'YYY') OR (A < 60.00 && NEW.Node <> 'ZZZ')
THEN
INSERT INTO `my_database`.`my_table` VALUES ('Data 1', 'Data 2', 'Data 3', 'Data 4', NEW.Node, A);
END IF;
END
所以,如果我只使用一个节点(而不是在 if 语句中使用 OR),那么触发器就可以正常工作了。
问题是,如何用很多OR做IF语句?
谢谢
【问题讨论】:
-
确切的错误消息是什么,以及您尝试执行的确切语句是什么?
-
添加多个
OR子句时,它在什么情况下不起作用? -
@Nick if 语句不起作用,节点值为 XXX、YYY 和 ZZZ 的数据已插入 my_table。我只想在A低于60时插入,并且节点不是XXX,YYY,ZZZ
-
啊那你的逻辑不对,你应该用
AND,而不是OR,你可以简化成A < 60.00 AND NEW.Node <> 'XXX' AND NEW.Node <> 'YYY AND NEW.Node <> 'ZZZ' -
Topicstarter 和 @Nick 注意到代码中的
AFTER INSERT ONmy_table` 和INSERT INTOmy_database.my_table` 这是不可能的,他试图插入到同一个表中触发器正在运行..这是不可能的,因为无限循环..
标签: mysql sql triggers database-trigger