【问题标题】:here can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT这里只能是一个 TIMESTAMP 列,其中 CURRENT_TIMESTAMP 为 DEFAULT
【发布时间】:2013-12-15 19:43:45
【问题描述】:

我想修改一个 TIMESTAMP 列以将 CURRENT_TIMESTAMP 作为默认值,并在我修改它时使用 CURRENT_TIMESTAMP。

这是我尝试过的脚本:

ALTER TABLE annonce MODIFY COLUMN date_modif TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

但我收到此错误消息:

1293 - 表定义不正确;只能有一个 TIMESTAMP DEFAULT 或 ON UPDATE 子句中具有 CURRENT_TIMESTAMP 的列

我还有另一列 (date_crea),它的默认值是 CURRENT_TIMESTAMP。

这是否意味着我只能在一列中使用值 CURRENT_TIMESTAMP ??

如果是这样,我该如何解决?

【问题讨论】:

  • 可以使用触发器来设置值。
  • @GordonLinoff 我该怎么做?
  • 如果您可以选择升级,我相信最近版本的 MySQL 已经取消了此限制。

标签: mysql


【解决方案1】:

这是否意味着我只能在一个中使用值 CURRENT_TIMESTAMP 列??

是的,事实就是这样。没有办法解决这个问题。 但您可能想使用插入后触发器和更新后触发器来自己设置时间。

阅读http://dev.mysql.com/doc/refman/5.7/en/create-trigger.html

CREATE TRIGGER trigger_name AFTER INSERT ON tbl_name FOR EACH ROW set my_second_currenttime = now();
CREATE TRIGGER trigger_name AFTER UPDATE ON tbl_name FOR EACH ROW set my_second_currenttime = now();

在现实世界中未经测试 - 只是一个代码示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2016-05-13
    • 1970-01-01
    • 2014-03-16
    • 2012-06-17
    • 2014-08-04
    相关资源
    最近更新 更多