【问题标题】:Composite keys with AUTO_INCREMENT and CURRENT_TIMESTAMP working together具有 AUTO_INCREMENT 和 CURRENT_TIMESTAMP 的复合键一起工作
【发布时间】:2013-08-05 10:43:39
【问题描述】:

与有关AUTO_INCREMENT 的复合键的许多其他问题类似,我收到以下错误:

Incorrect table definition; there can be only one auto column and it must be defined as a key

我正在做的是记录表中所有更改的历史记录。每次进行更改时,都会插入一个带有新时间戳的新行,而之前的修改保持不变。

我关心的 DDL 是这样的:

DROP TABLE IF EXISTS personnel;
CREATE TABLE IF NOT EXISTS personnel
(
    modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL,
    ...

    PRIMARY KEY (modified, id),
    ...
) ENGINE=InnoDB;

我认为我收到此错误是因为我同时使用了 CURRENT_TIMESTAMPAUTO_INCREMENT。那么有没有办法解决这个问题 让 PHP 生成时间戳(所以我的模型可以像插入任何其他表一样插入,让控制器做脏活)。

【问题讨论】:

    标签: php mysql auto-increment composite-primary-key


    【解决方案1】:

    MySQL 的错误信息还有待改进...

    自增列必须位于索引的开头。在您的情况下,您需要添加另一个索引 - KEY id(id)

    【讨论】:

      猜你喜欢
      • 2013-03-16
      • 2012-07-04
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-08-25
      • 2016-04-24
      • 1970-01-01
      相关资源
      最近更新 更多