我正在尝试使用两个表创建一个简单的数据库:
如附图所示:
我想要的是参与者的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:表定义不正确;只能有一个自动列,必须将其定义为键
任何帮助将不胜感激:)
答案 0 :(得分:1)
如果它不是PK的第一个字段,则InnoDB表上不能有 auto_increment 字段
尝试替换
PRIMARY KEY (`goup_id`, `id`)
与
PRIMARY KEY (`id`)
或者如果你喜欢
PRIMARY KEY (`id`, `goup_id`)
实际上对于InnoDB,auto_increment列必须是PK的第一个。