mysql> INSERT INTO ENROLLMENT (ssn, courseNumber, quarter, grade)
VALUES ('333333333', '124', 'Fall2012', 'C');
mysql> select * from section;
+--------------+------------+------------+------------------+
| CourseNumber | Quarter | RoomNumber | DayTime |
+--------------+------------+------------+------------------+
| 100 | Fall2012 | 5 | MW 1:00-2:OOPM |
| 100 | Fall2013 | 5 | MW 1:00-2:OOPM |
| 124 | Fall2013 | 5 | TuTh 3:00-4:OOPM |
| 124 | Spring2011 | 36 | Tu 5:30-8:OOPM |
| 220 | Winter2014 | 450 | MWF 8:30-10:OOAM |
| 220 | Winter2015 | 450 | MWF 8:30-10:AM |
| 233 | Fall2013 | 210 | Tu 1:00-3:00PM |
| 233 | Summer013 | 210 | Tu 1:00-3:00PM |
| 233 | Summer2010 | 200 | MW 1:OO-2:OOPM |
| 266 | Summer2013 | 300 | Tu 1:00-3:00PM |
| 266 | Summer2014 | 300 | Tu 5:00-6:00PM |
| 266 | Winter2011 | 121 | TuTh 7:30-8:OOPM |
| 400 | Spring2010 | 330 | TuTh 2:00-3:00PM |
+--------------+------------+------------+------------------+
| ENROLLMENT | CREATE TABLE `ENROLLMENT` (
`SSN` varchar(9) NOT NULL,
`CourseNumber` varchar(4) NOT NULL,
`Quarter` varchar(10) NOT NULL,
`Grade` varchar(1) DEFAULT NULL,
PRIMARY KEY (`SSN`,`CourseNumber`,`Quarter`),
KEY `CourseNumber` (`CourseNumber`),
KEY `Quarter` (`Quarter`),
CONSTRAINT `enrollment_ibfk_1` FOREIGN KEY (`SSN`) REFERENCES `Student` (`SSN`),
CONSTRAINT `enrollment_ibfk_2` FOREIGN KEY (`CourseNumber`) REFERENCES `Course` (`CourseNumber`),
CONSTRAINT `enrollment_ibfk_3` FOREIGN KEY (`Quarter`) REFERENCES `section` (`Quarter`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
私はSQLの初心者です。私は基本的なSQLクエリを学んでいます。 セクションテーブルで、Fall2012のコース番号124は存在しません。しかし、私はそれを作成することができました。どのように可能ですか?MySQLの参照が存在しないにもかかわらず作成された外部キー
私が正しく理解していれば、その後、 '(コース番号、四半期)が含まれ、別のテーブルには'があり、何の '(124、Fall2012はありません) 'そこに? まあ、個別の(単一の)外部キー制約を作成しました。したがって、123とFall2012の両方は、互いに独立して存在します。おそらくあなたが望むのは、 'CONSTRAINT fk_course_quarter FOREIGN KEY(コース、クォーター)REFERENCES table_course_quarter(コース、クォーター)'です。 'table_course_quarter(course、quarter)'に(ユニークな)インデックスが必要になるかもしれません。それはあなたが探しているものですか?これを答えにすることはできますか? – flutter
はい、今すぐ入手します。 –