2016-11-30 7 views
0
CREATE TABLE `class` (
    `class_id` int(11) NOT NULL AUTO_INCREMENT, 
    `section_name` varchar(50) NOT NULL, 
    `class_alias` varchar(200) NOT NULL, 
    `grading_scheme` int(11) NOT NULL DEFAULT '0', 
    `year` year(4) NOT NULL, 
    `grade_calc_method_id` varchar(20) DEFAULT NULL, 
    PRIMARY KEY (`class_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=48819 DEFAULT CHARSET=latin1; 



CREATE TABLE `teachers` (
    `teacher_id` int(11) NOT NULL AUTO_INCREMENT, 
    `user_id` int(11) NOT NULL, 
    `teacher_subject` varchar(20) NOT NULL DEFAULT 'None', 
    PRIMARY KEY (`teacher_id`), 
    KEY `user_id` (`user_id`,`school_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=48606 DEFAULT CHARSET=latin1; 

CREATE TABLE `teacher_classes` (
    `teacher_class_id` int(11) NOT NULL AUTO_INCREMENT, 
    `teacher_id` int(11) NOT NULL, 
    `class_id` int(11) NOT NULL, 
    PRIMARY KEY (`teacher_class_id`), 
    UNIQUE KEY `teacher_id_class_id` (`teacher_id`,`class_id`), 
    KEY `teacher_id` (`teacher_id`,`class_id`) 
) ENGINE=InnoDB AUTO_INCREMENT=46707 DEFAULT CHARSET=latin1; 

はここで別のジャンクションテーブルteacher_classes
を持って失敗しました外部キー制約を追加するためのクエリですは、子行を追加または更新できません:外部キー制約は、DBMSがerrors.Iをチェックできるように、外部キーを使用してテーブル間のデータの一貫性を確保しようとすると、mysqlの

ALTER TABLE teacher_classes 
ADD CONSTRAINT `tc_fk_class_id` FOREIGN KEY (`class_id`) 
REFERENCES class (`class_id`) ON UPDATE NO ACTION ON DELETE NO ACTION, 
ADD CONSTRAINT `tc_fk_teacher_id` FOREIGN KEY (`teacher_id`) 
REFERENCES teachers (`teacher_id`) ON UPDATE NO ACTION ON DELETE NO ACTION; 

このトピックに関する他の投稿も見ましたが、次のエラーが発生します。

は、子行を追加または更新できません:外部キー制約が を失敗(DB_NAME#sql-403_12、CONSTRAINT tc_fk_teacher_id FOREIGN KEY(teacher_idteachersteacher_idを参照)ON UPDATE ON NO ACTIONのNO ACTIONを削除しない。)

+0

MySQLは、データが一致していないことを言っているあなたの子テーブルに同じ定義を持っていることを確認してください。テーブル 'teachers'の' teacher_id'が 'teacher_classes'テーブルのidと一致しません。おそらく、 'teachers_classes'に' teachers 'というテーブルに存在しないidがあります – Sablefoste

+0

私は自分の質問を編集しました – deadman

答えて

0

これはおそらく、列の定義が正しく一致していない可能性があります。テーブルteachersの場合、PK列定義は以下の通りです。

`teacher_id` int(11) NOT NULL AUTO_INCREMENT 

あなたはteacher_classes

関連する問題