2016-05-17 96 views
0

不知道爲什麼我仍然遇到問題「錯誤1215」,其中它們具有相同的數據類型並且父表處於主鍵中。錯誤1215:無法添加外鍵約束SQL語句

子表:

CREATE TABLE `customer_notice_type` (
    `CUSTOMER_NOTICE_TYPE_ID` int(11) NOT NULL AUTO_INCREMENT, 
    `CUSTOMER_ID` int(11) NOT NULL, 
    `CUSTOMER_NOTICE_TYPE_NAME` varchar(50) NOT NULL, 
    `SYSTEM_NOTICE_TYPE_ID` int(11) NOT NULL, 
    `STATUS` char(1) NOT NULL, 
    `CREATED_BY` varchar(50) NOT NULL, 
    `CREATED_DATE` datetime NOT NULL, 
    `MODIFIED_BY` varchar(50) DEFAULT NULL, 
    `MODIFIED_DATE` datetime DEFAULT NULL, 
    PRIMARY KEY (`CUSTOMER_NOTICE_TYPE_ID`), 
    KEY `fk_customer_id_customer_notice_type_idx` (`CUSTOMER_ID`), 
    CONSTRAINT `fk_customer_id_customer_notice_type` FOREIGN KEY (`CUSTOMER_ID`) REFERENCES `customer` (`CUSTOMER_ID`) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=494 DEFAULT CHARSET=latin1; 

父表:

CREATE TABLE `system_notice_type` (
    `SYSTEM_NOTICE_TYPE_ID` int(11) NOT NULL, 
    `SYSTEM_NOTICE_TYPE_NAME` varchar(45) NOT NULL, 
    `LINE_OF_BUSINESS_ID` int(11) NOT NULL, 
    `STATUS` char(1) NOT NULL, 
    PRIMARY KEY (`SYSTEM_NOTICE_TYPE_ID`) 
) ENGINE=MyISAM AUTO_INCREMENT=16 DEFAULT CHARSET=latin1; 

SQL腳本來創建外鍵:

ALTER TABLE `fexpress`.`customer_notice_type` 
ADD CONSTRAINT `fk_system_notice_type_customer_notice_type` 
FOREIGN KEY (`SYSTEM_NOTICE_TYPE_ID`) 
REFERENCES `fexpress`.`system_notice_type` (`SYSTEM_NOTICE_TYPE_ID`) 
ON DELETE CASCADE ON UPDATE CASCADE; 

回答

0

你有兩個潛在的問題。首先,alter table聲明參考fexpress。這可能是也可能不是該表的正確模式。所以,這是一個潛在的問題。

第二個真正的問題是在子表中定義的約束:

CONSTRAINT `fk_customer_id_customer_notice_type` FOREIGN KEY (`CUSTOMER_ID`) REFERENCES `customer`(`CUSTOMER_ID`) ON DELETE CASCADE ON UPDATE CASCADE 

父表還沒有定義,所以它產生一個錯誤。

刪除此行並調整模式名稱會生成工作代碼,如SQL Fiddle所示。

+0

感謝您的回覆。 當你說父表時,你是指客戶表?如果是的話,這已經定義並且正在工作。現在的問題是我無法添加另一個FK約束與「system_notice_type」父表。 – Laurence

相關問題