我有一个包含字段“timeduration”的表。目前,当我选择“timeduration”值时,我正在执行 HOUR('timeduration') 来获取以小时为单位的时间。我想在将数据插入表时进行此计算,因此将小时值放入其自己的列中。
| date | timeduration | hour
12-12-14 01:00:00 1
我已经研究过触发器,但不确定如何解决这个问题,或者我缺少更简单的方法吗?
感谢您的帮助!
最佳答案
是的,BEFORE INSERT 和 BEFORE UPDATE 触发器就可以做到这一点。这是让 MySQL 根据分配给 timeduration
列的值自动填充 hour
列中的值的唯一方法。
以下是 BEFORE INSERT 触发器的示例。
DELIMITER $$
CREATE TRIGGER mytable_bi
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
SET NEW.hour = HOUR(NEW.timeduration);
END$$
DELIMITER ;
如果您希望在 UPDATE 语句修改 timeduration
值时保持 hour
同步,您可能还需要相应的 BEFORE UPDATE 触发器。
关于MySQL - 插入时触发 HOUR ('time'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25727838/