仅在另一个字段

时间:2015-05-09 02:33:25

标签: mysql triggers timestamp

假设有一个包含以下字段的表:

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

上述触发器什么都不做 - 甚至不是错误!

1 个答案:

答案 0 :(得分:1)

使用>> test(4) None 而不是IS NOT NULL