Я прочитал Концепции системы баз данных, 6-е издание, Silberschatz. Я собираюсь внедрить систему университетской базы данных, показанную в главе 2 в OS X в MySQL. Но мне сложно создать таблицу course
. таблица department
выглядит как
mysql> select * from department
-> ;
+------------+----------+-----------+
| dept_name | building | budget |
+------------+----------+-----------+
| Biology | Watson | 90000.00 |
| Comp. Sci. | Taylor | 100000.00 |
| Elec. Eng. | Taylor | 85000.00 |
| Finance | Painter | 120000.00 |
| History | Painter | 50000.00 |
| Music | Packard | 80000.00 |
| Physics | Watson | 70000.00 |
+------------+----------+-----------+
mysql> show columns from department
-> ;
+-----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| dept_name | varchar(20) | NO | PRI | | |
| building | varchar(15) | YES | | NULL | |
| budget | decimal(12,2) | YES | | NULL | |
+-----------+---------------+------+-----+---------+-------+
Создание таблицы course
вызывает следующую ошибку.
mysql> create table course
-> (course_id varchar(7),
-> title varchar (50),
-> dept_name varchar(20),
-> credits numeric(2,0),
-> primary key(course_id),
-> foreign key (dept_name) references department);
ERROR 1215 (HY000): Cannot add foreign key constraint
после поиска google для ограничения внешнего ключа, я только что узнал, что слово "ограничение внешнего ключа" указывает, что данные из столбца внешнего ключа в таблице course
должны существовать в столбце первичного ключа в таблице department
. Но я должен был встретить эту ошибку при вставке данных.
Если нет, то почему автор заставляет меня выполнить этот оператор SQL?
Если я действительно выполняю ошибочный оператор SQL, должен ли я указывать dept_name
в таблице курса в качестве внешнего ключа после вставки некоторых данных?
EDIT: ввод set foreign_key_checks=0
в mysql>
не исправляет ошибку.
------------------------
LATEST FOREIGN KEY ERROR
------------------------
2013-09-21 16:02:20 132cbe000 Error in foreign key constraint of table university/course:
foreign key (dept_name) references department):
Syntax error close to:
)
mysql> set foreign_key_checks=0
-> ;
Query OK, 0 rows affected (0.00 sec)
mysql> create table course
-> (course_id varchar(7),
-> title varchar(50),
-> dept_name varchar(20),
-> credits numeric(2,0),
-> primary key(course_id),
-> foreign key (dept_name) references department);
ERROR 1215 (HY000): Cannot add foreign key constraint