AUTO_INCREMENT和CURRENT_TIMESTAMP一起使用的复合键

时间:2013-08-05 10:43:39

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

与关于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做时间戳生成(所以我的模型可以插入就好像它是任何其他表一样,让控制器做脏工作。)

1 个答案:

答案 0 :(得分:1)

MySQL错误消息还有更多需要......

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