Mysql
錯誤程式碼:1215。無法添加外鍵約束
我正在 Mysql Workbench 上創建一個 DBSM,但是當 Itry 創建最後一個表時,我收到一個錯誤,因為它無法添加外鍵,但我不明白為什麼,因為子鍵具有相同的數據類型和排序規則父鍵和名稱不重複。
這是兩個表的程式碼:
CREATE TABLE PRESTITO( MATRICOLA_U INT, CODICE_LIB SMALLINT(4), DATA_P DATE, DATA_R DATE, N_DIP SMALLINT(2), PRIMARY KEY(CODICE_LIB), FOREIGN KEY(MATRICOLA_U) REFERENCES UTENTI(MATRICOLA), FOREIGN KEY(CODICE_LIB) REFERENCES LIBRI(CODICE_L) ); CREATE TABLE DIPARTIMENTO( NUMERO_DIP SMALLINT(2), NOME_DIP VARCHAR(50) NOT NULL, INDIRIZZO_DIP VARCHAR(50), PRIMARY KEY(NUMERO_DIP), FOREIGN KEY (NUMERO_DIP) REFERENCES PRESTITO(N_DIP) );
有人可以幫忙嗎?非常感謝你!
在您的情況下,Eversy 引用的列 N_DIP 必須被索引,我將其添加為
KEY(N_DIP)
. PRiMARY KEY 當然是有索引的,所以只要你堅持使用它們就沒有問題。使用您也可以使用的組合鍵,您需要表中的列數與組合鍵中的列數相同
CREATE TABLE PRESTITO( MATRICOLA_U INT, CODICE_LIB SMALLINT(4), DATA_P DATE, DATA_R DATE, N_DIP SMALLINT(2), KEY (N_DIP), PRIMARY KEY(CODICE_LIB), FOREIGN KEY(MATRICOLA_U) REFERENCES UTENTI(MATRICOLA), FOREIGN KEY(CODICE_LIB) REFERENCES LIBRI(CODICE_L) ); CREATE TABLE DIPARTIMENTO( NUMERO_DIP SMALLINT(2), NOME_DIP VARCHAR(50) NOT NULL, INDIRIZZO_DIP VARCHAR(50), PRIMARY KEY(NUMERO_DIP), FOREIGN KEY (NUMERO_DIP) REFERENCES PRESTITO(N_DIP) );