我有一个InnoDB表中有一个时间戳,我希望有另一个只包含日期部分的时间戳,以便我可以在其上创建一个索引。 (我的时间查询将始终受日期的约束,所以在时间戳上有一个高基数的索引并不是真的需要。)如何从Mysql 5.5中的时间戳字段自动更新日期字段?
是否有可能从时间戳字段自动更新日期字段ON UPDATE
(类似于CURRENT_TIMESTAMP
作品)?
我试过以下,但它MySQL说我有我的SQL语法错误。
CREATE TABLE test_table (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`full_ts` timestamp NULL DEFAULT NULL COMMENT 'The full timestamp',
`only_date` date NULL DEFAULT NULL ON UPDATE date(full_ts) COMMENT 'This field carries only the date part of the full timestamp for better indexing.',
PRIMARY KEY (`id`),
KEY `ONLY_DATE_IDX` (`only_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我当然可以在代码中随处更新这两个领域,但它是清洁,如果only_date
场是full_ts
领域的奴隶,更新和数据库保持一致。
我知道在MySQL 5.7.5中为存储生成的列添加了一个新功能,这似乎正是这样做的。不幸的是,目前无法升级数据库版本。
有没有办法在MySQL 5.5中实现这一点?
创建管理它的触发器。 – jarlh
我不认为你可以轻松做到这一点。您不能修改导致触发器执行的相同表格。 – jbx
什么?这就是你使用触发器的原因。 – jarlh