使用基于不同列的auto_increment创建一个表

时间:2012-05-23 06:32:26

标签: mysql auto-increment

基本上标题说明了我要做的事情。 mysql手册概述了它应该如何工作:http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html

然而,我认为,我必须遗漏一些明显的东西,因为它不适合我。这是我的代码:

$sql = "CREATE TABLE $table_name (
    id MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
    block VARCHAR(30) NOT NULL,
    issue_number MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
    date BIGINT(30),
    UNIQUE (id),
    PRIMARY KEY  (block, issue_number)
);";

4 个答案:

答案 0 :(得分:2)

我认为没有posibilites在一张表中有一个以上的自动增量列。使用此:

$sql = "CREATE TABLE $table_name (
    id MEDIUMINT(9) NOT NULL,
    block VARCHAR(30) NOT NULL,
    issue_number MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
    date BIGINT(30),
    UNIQUE (id),
    PRIMARY KEY  (block, issue_number)
);"

答案 1 :(得分:1)

只能有一个自动列,必须将其定义为键,下面一个是

CREATE TABLE table_name (
    id MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
    block VARCHAR(30) NOT NULL,
    issue_number MEDIUMINT(9) NOT NULL ,
    date BIGINT(30),
    UNIQUE (id),
    PRIMARY KEY  (block, issue_number)
)

答案 2 :(得分:0)

与其他人说的一样,只允许一个auto_increment -column。您可以尝试在insert-statement中增加id。

insert into $table_name (id) values (1) on duplicate key update id = id + 1; 

但也许不是最好的解决方案..

答案 3 :(得分:0)

您可以使用自动递增的issue_number字段创建MyISAM表,例如 -

CREATE TABLE table_name(
  id MEDIUMINT(9) NOT NULL,
  block VARCHAR(30) NOT NULL,
  issue_number MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
  date BIGINT(30),
  UNIQUE (id),
  PRIMARY KEY (block, issue_number)
)
ENGINE = MYISAM;