Mysql

有誰知道如何從一個表中製作兩個兩列外鍵?

  • October 30, 2021

我嘗試了以下操作,但收到一條錯誤消息。

計分錶

mysql> create table goleo(
   -> id int,
   -> nombre varchar(30),
   -> goles int,
   -> primary key (nombre, id, goles));
Query OK, 0 rows affected (0.03 sec)

最佳射手錶

mysql> create table pichichi(
   -> id int not null,
   -> nombre varchar(30) not null,
   -> goles int not null,
   -> foreign key (nombre) references goleo(nombre),
   -> foreign key (goles) references goleo(goles));

錯誤資訊

ERROR 1822 (HY000): Failed to add the foreign key constraint. 
Missing index for constraint 'pichichi_ibfk_1' in the 
referenced table 'goleo'

外鍵列必須與引用表中的主鍵列相同。如果主鍵有三列,那麼外鍵必須有三列,順序相同。不是三個單獨的外鍵。

外鍵列必須與引用表中的主鍵列相同。如果主鍵有三列,那麼外鍵必須有三列,順序相同。不是三個單獨的外鍵。

正如比爾所說,您需要將外鍵聲明為

Foreign key (nombre, id, goles) references ...

我建議使用命名約束

Constraint <name> Foreign key (nombre, id, goles) references ...

這將使處理未來的修改變得更加容易

引用自:https://dba.stackexchange.com/questions/301309