在插入 MySQL 之前我有一个代码触发器用于过滤数据,但它不起作用。这是我的代码的逻辑,如果 new.suhu_udara > 30 且 new.suhu_udara - old.suhu_udara <10 那么设置 new.suhu_udara = null
USE `cuaca_maritim`;
DELIMITER $$
DROP TRIGGER IF EXISTS cuaca_maritim.filter$$
USE `cuaca_maritim`$$
CREATE DEFINER=`root`@`localhost` TRIGGER `filter` BEFORE INSERT ON data_cuaca` FOR EACH ROW
if( new.suhu_udara < 21.5 or new.kelembaban_udara < 22 or new.tekanan_udara < 1002.4) then
Set new.suhu_udara = null ;
elseif ( new.suhu_udara > 37.6 or new.kelembaban_udara > 100 or new.tekanan_udara >1018.9 or new.kecepatan_angin > 44) then
Set new.kelembaban_udara = null ;
end if$$
DELIMITER ;
USE `cuaca_maritim`;
DELIMITER $$
DROP TRIGGER IF EXISTS cuaca_maritim.data_cuaca_AFTER_UPDATE$$
USE `cuaca_maritim`$$
CREATE DEFINER = CURRENT_USER TRIGGER `cuaca_maritim`.`data_cuaca_AFTER_UPDATE` AFTER UPDATE ON `data_cuaca` FOR EACH ROW
if ( old.suhu_udara - new.suhu_udara > 10) then
set new.suhu_udara=null ;
end if
$$
DELIMITER ;
你能帮我解释一下这段代码吗?谢谢
最佳答案
您没有使用正确的触发器功能。在插入触发器中什么是 OLD.suhu_udara ?
老了。值仅存在于更新查询中。请检查触发器功能,我认为您应该在此处使用更新。
关于mysql - 如何使用触发器mysql进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535913/