【发布时间】:2013-04-23 09:32:54
【问题描述】:
我有 2 张桌子:
-
事件:
CREATE TABLE incidencies ( id_inc INT(7) ZEROFILL NOT NULL auto_increment PRIMARY KEY, empresa VARCHAR(40), maquina VARCHAR(20), tipus_inc VARCHAR(20), estat_mon VARCHAR(20), estat_inc VARCHAR(20), dia_inc DATE, hora_inc TIME, descripcio VARCHAR(200) ) CHARACTER SET utf8 engine=innodb; -
评论:
CREATE TABLE comentaris ( id_inc INT(7) ZEROFILL NOT NULL, id_com INT(3) ZEROFILL NOT NULL auto_increment, data_com DATE, hora_com TIME, comentari VARCHAR(999), PRIMARY KEY(id_inc, id_com), FOREIGN KEY (id_inc) REFERENCES incidencies (id_inc) ON DELETE CASCADE ON UPDATE CASCADE ) CHARACTER SET utf8 engine=innodb;
如您所见,在 COMENTARIS 表上,ID_INC 是一个外键,其起源是 auto_incremental,但在 COMENTARIS 上不再存在。
现在我确实想将字段 ID_COM 设为 auto_incremental,并将它们设为主键。
表格应如下所示:
ID_INC | ID_COM 001 | 001 001 | 002 001 | 003 002 | 004 003 | 005问题在于,似乎 MySQL 将 ID_INC 检测为 auto_incremental 字段,而 COMENTARIS 表上 不再。
当我尝试使 ID_COM auto_incremental 时,我收到以下错误消息:
ERROR 1075 (42000):表定义不正确;只能有一个自动列,并且必须定义为一个键
数据库需要是InnoDB引擎。
有什么办法吗?
【问题讨论】:
-
如果
ID_INC是COMENTARIS中的外键,那么它在该表中是AUTO_INCREMENT(甚至是主键)没有任何意义。听起来您需要了解主键和外键实际上是什么。
标签: mysql foreign-keys