2017-02-28 94 views
0

我有一个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中实现这一点?

+0

创建管理它的触发器。 – jarlh

+0

我不认为你可以轻松做到这一点。您不能修改导致触发器执行的相同表格。 – jbx

+0

什么?这就是你使用触发器的原因。 – jarlh

回答

相关问题