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

标签 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 ;

你能帮我解释一下这段代码吗?谢谢

最佳答案

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

老了。值仅存在于更新查询中。

请检查触发器功能,我认为您应该在此处使用更新。

关于mysql - 如何使用触发器mysql进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535913/

相关文章:

mysql - 在 SQL 文件中使用 IF 控制 INSERT 和 UPDATE 查询

mysql - 向现有列添加自动增量,而不影响当前记录值

php - 如何避免在每个查询中都使用 $conn?

php - 隐藏和显示自定义标记在我的谷歌地图中不起作用

mysql - 毫秒还是日期类型?

php - 如何将一个表中的用户值查询到列标题并获取标题下的值?

MySql 表,错误#1064 和错误#1068 定义了多个主键

mysql - 过滤掉MySQL中使用GROUP BY得到的结果

php - foreach 循环更新每条记录而不是刚刚在复选框中选择的记录的问题

mysql - SQL 用一条语句更新键/值列表?