如何使用触发器mysql进行过滤

时间:2015-07-21 10:00:05

标签: mysql

我在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 ;

你可以帮我用这段代码吗?谢谢

1 个答案:

答案 0 :(得分:0)

您没有使用正确的触发功能。在Insert Trigger中什么是OLD.suhu_udara?

OLD。值仅在更新查询中。

请检查触发功能,我认为你应该在这里使用更新。