假设有一个包含以下字段的表:
ID (auto-increment, int, primary)
NAME (varchar 60)
LOC_LAT (float 8,6)
LOC_LONG (float 9,6)
LASTSEEN (timestamp)
我非常喜欢 timestamp 数据类型,因为它通过将所有内容存储为UTC来重新计算时区。但是,每当表中的任何位置发生任何变化时,它都会更新。我需要的是 LASTSEEN 字段仅在 LOC_LAT 或 LOC_LONG 字段更新为非NULL时才使用新时间戳进行更新值。可能吗?或者我必须诉诸日期时间吗?
这是我尝试的但它根本不做任何事情:
DROP TRIGGER IF EXISTS `trigger_last_seen`;
CREATE DEFINER=`root`@`localhost` TRIGGER `trigger_last_seen`
BEFORE UPDATE ON `distilled` FOR EACH ROW IF (NEW.LOC_LAT != NULL OR NEW.LOC_LONG != NULL)
THEN SET NEW.LASTSEEN = current_timestamp();
END IF
上述触发器什么都不做 - 甚至不是错误!
答案 0 :(得分:1)
使用>> test(4)
None
而不是IS NOT NULL