代码之家  ›  专栏  ›  技术社区  ›  Amiga500

mysql-不更新更新的列

  •  0
  • Amiga500  · 技术社区  · 6 年前

    我有一个表模式定义为:

    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`);
    

    运行之后,条目 试验酮 已创建,也已更新\在创建时 时间戳(6)。 到目前为止一切都很好。

    现在,当我再次运行这个查询时,我的期望是用来自时间戳(6)的新值更新更新更新的_。但这并没有发生。第一次创建的值永远不会更新。

    我需要在我的表模式中更改一些内容,但我不知道是什么。

    1 回复  |  直到 6 年前
        1
  •  1
  •   skelwa    6 年前

    updated_at

    CREATE TABLE IF NOT EXISTS `updated_tables` (
      `table_name` VARCHAR(50) NOT NULL,
      `status` INT(3) 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 updated_tables;
    INSERT INTO `updated_tables` (`table_name`, `status`) VALUES ('testone', 1) ON DUPLICATE KEY UPDATE `status`=VALUES(`status`);
    INSERT INTO `updated_tables` (`table_name`, `status`) VALUES ('testone', 2) ON DUPLICATE KEY UPDATE `status`=VALUES(`status`);