2016-05-17 26 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

次の2つの潜在的な問題を抱えています。まず、alter tableステートメント参照fexpressを参照してください。これは、表の正しいスキーマである場合とそうでない場合があります。それが潜在的な問題の1つです。それがエラーを発生させ、

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

親テーブルがまだ定義されていません。

二本当の問題は、子テーブルに定義された制約です。

この行を削除し、スキーマ名を調整すると、このコードはSQL Fiddleのようになります。

+0

お返事ありがとうございます。 親テーブルと言えば、顧客テーブルを参照していますか?はいの場合、これは既に定義され、現在作業中です。今の問題は、 "system_notice_type"親テーブルを持つ別のFK制約を追加できないことです。 – Laurence

関連する問題