【发布时间】:2018-07-09 20:27:06
【问题描述】:
我有一个表模式定义为:
CREATE TABLE IF NOT EXISTS `updated_tables` (
`table_name` VARCHAR(50) NOT NULL,
`updated_at` TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
PRIMARY KEY (`table_name`),
UNIQUE INDEX `table_name_UNIQUE` (`table_name` ASC))
ENGINE = InnoDB;
我使用这个查询:
SELECT * FROM citadel_test.updated_tables;
INSERT INTO `updated_tables` (`table_name`) VALUES ('testone') ON DUPLICATE KEY UPDATE `table_name`=VALUES(`table_name`);
运行后,会创建条目 testone,还会创建带有适当 timestamp(6) 的 updated_at。 到目前为止一切顺利。
现在,当我再次运行此查询时,我的期望是使用来自 timestamp(6) 的新值更新 updated_at。但它没有发生。首次创建的值永远不会更新。
我需要在我的表架构中进行一些更改,但我不知道是什么。
【问题讨论】:
-
试试这个 -
updated_at TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP -
仍然不更新 timestamp(6) 字段。
-
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP这应该只在更新查询发生时起作用 -
删除 TIMESTAMP 长度并尝试。它会工作的
-
我需要这些值,因为这是缓存表。此外,简单地删除它并不能解决问题。
标签: mysql