Изучение SQL, второе издание
By Alan Beaulieu
Publisher: O'Reilly Media
Released: April 2009
ISBN: 9780596520830
В вышеприведенной книге есть код для создания базы данных MySQL, который они разместили здесь:
http://examples.oreilly.com/9780596520847/LearningSQLExample.sql
Когда я запускаю код, все «кажется» нормальным, но только после того, как я удалю следующие строки кода:
/* recreate employee self-referencing foreign key */
alter table employee add constraint fk_e_emp_id
foreign key (superior_emp_id) references employee (emp_id);
Я считаю, что для меня ясно, что делает этот код, и что он был выполнен в инструкциях create table - и, похоже, никогда не отменялся (поэтому мне неясно, зачем нужен код, вызывающий ошибку); может быть неправильно в этом.
Вот сообщение об ошибке, которое я получаю для тех строк кода, которое одинаково, независимо от того, выполняется ли оно в коде, указанном выше, или в случае ниже, запускается после удаления его из предоставленного кода, запуская предоставленный код ( который создает базу данных), а затем запускает ее самостоятельно в созданной базе данных:
Enter password: **********************************************************
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.1.53-community MySQL Community Server (GPL)
Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> use bank
Database changed
mysql> alter table employee add constraint fk_e_emp_id
-> foreign key (superior_emp_id) references employee (emp_id);
ERROR 1005 (HY000): Can't create table 'bank.#sql-80c_11' (errno: 121)
mysql>exit
UPDATE:
На всякий случай, если вам интересно, так как я нахожу код немного странным, инструкции книги по использованию кода, на который ссылаются, в основном:
create database bank;
use bank
source C:\LearningSQLExample.sql;