簡體   English   中英

當存在一個外鍵源為auto_inc時,無法創建auto_increment主鍵

[英]Can't create an auto_increment primary key, when there is a foreign key which is auto_inc in origin

我有2張桌子:

  1. 包括:

     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; 
  2. COMENTARIS:

     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 ,出現以下錯誤消息:

錯誤1075(42000):錯誤的表格定義; 只能有一個自動列,並且必須將其定義為鍵

該數據庫必須是InnoDB引擎。

有什么辦法嗎?

該問題與外鍵無關。 如果這是您運行的所有代碼,則:

CREATE TABLE comentaris
(
    id_inc    INT(7) ZEROFILL NOT NULL,
    id_com    INT(3) ZEROFILL NOT NULL auto_increment,
    PRIMARY KEY(id_inc, id_com)
)
engine=innodb; 

...您仍然會遇到相同的錯誤。

為了能夠在id_com上使用AUTO_INCREMENT ,您需要有一個鍵,其中id_com是第一項或唯一項。 到目前為止,只有id_com第二項的主鍵, id_com是不夠的,因為MySQL不能為此目的使用該索引。

我給您的印象是您有錯別字,而且您確實想要這樣:

CREATE TABLE comentaris
(
    id_inc    INT(7) ZEROFILL NOT NULL,
    id_com    INT(3) ZEROFILL NOT NULL auto_increment,
    PRIMARY KEY(id_com)
)
engine=innodb; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM