Mysql
在一個語句中引用單個表的多個外鍵
我寫了以下聲明:
CREATE TABLE ORDEN ( `numero` INT UNSIGNED ZEROFILL NOT NULL, `fecha` DATE NOT NULL, `cliente` INT(6) UNSIGNED NOT NULL, `nombre_cliente` VARCHAR(64) NOT NULL, `direccion_cliente` VARCHAR(64) NOT NULL, `email_cliente` VARCHAR(64), /* Se utiliza ON DELETE NO ACTION porque probablemente (al igual que cualquier otro documento del mismo tipo) las órdenes se quieran conservar */ FOREIGN KEY `fk_ORDEN_CLIENTE_ID`(`cliente`) REFERENCES CLIENTE(`id`) ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY `fk_ORDEN_CLIENTE_NOMBRE`(`nombre_cliente`) REFERENCES CLIENTE(`nombre`) ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY `fk_ORDEN_CLIENTE_DIRECCION`(`direccion_cliente`) REFERENCES CLIENTE(`direccion`) ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY `fk_ORDEN_CLIENTE_EMAIL`(`email_cliente`) REFERENCES CLIENTE(`email`) ON DELETE NO ACTION ON UPDATE CASCADE, PRIMARY KEY(`numero`) );
問題是我在嘗試執行語句時遇到了這個錯誤:
錯誤程式碼:1215。無法添加外鍵約束
我一直在想,可能不允許在一個語句中使用外鍵引用單個表中的許多列。
這也是
CLIENTE
表的定義:CREATE TABLE CLIENTE ( `id` INT(6) UNSIGNED ZEROFILL NOT NULL, `email` VARCHAR(64), /* Dirección electrónica */ `nombre` VARCHAR(64) NOT NULL, `direccion` VARCHAR(64) NOT NULL, PRIMARY KEY(`id`), UNIQUE(`direccion`) );
我該如何解決我的問題?我一直在尋找解決方案,但沒有成功。
外鍵可以參考父表的唯一鍵或主鍵添加到子表中。列名和電子郵件未定義為客戶表中的主鍵或唯一鍵。因此,您無法將 FK 添加到表 ORDEN 中的這些列。