在MySQL中创建第二个PK作为AI

时间:2013-11-20 17:33:09

标签: mysql sql primary-key auto-increment

我正在尝试使用两个表创建一个简单的数据库:

  • 参与者

如附图所示:

enter image description here

我想要的是参与者的id是一个自动增量作为表的第二个PK,所以我会有像

这样的条目
|ID    | group_id |
|  1   | 1        |
|  2   | 1        |
|  3   | 1        |
|  1   | 2        |
|  2   | 2        |
|  3   | 2        |

依旧......

我已经按照这里的答案:https://stackoverflow.com/a/5416667/1358670,以下是MySQL。

CREATE TABLE IF NOT EXISTS `test`.`participant` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `goup_id` INT(11) NOT NULL,
  `name` VARCHAR(45) NULL DEFAULT NULL,
  PRIMARY KEY (`goup_id`, `id`),
  INDEX `fk_participant_goup_idx` (`goup_id` ASC),
  CONSTRAINT `fk_participant_goup`
    FOREIGN KEY (`goup_id`)
    REFERENCES `test`.`goup` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci

但我一直收到以下错误:

  

错误:错误1075:表定义不正确;只能有一个自动列,必须将其定义为键

任何帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

如果它不是PK的第一个字段,则InnoDB表上不能有 auto_increment 字段

尝试替换

PRIMARY KEY (`goup_id`, `id`)

PRIMARY KEY (`id`)

或者如果你喜欢

PRIMARY KEY (`id`, `goup_id`)

实际上对于InnoDB,auto_increment列必须是PK的第一个。