2011-08-08 1 views
8

Правилен ли этот синтаксис при создании внешнего ключа?Синтаксис MySQL при создании внешнего ключа

create table department 
(
    departmentID int not null auto_increment primary key, 
    name varchar(30) 
) type=InnoDB; 

create table employee 
(
    employeeID int not null auto_increment primary key, 
    name varchar(80), 
    job varchar(30), 
    departmentID int not null references department(departmentID) 
) type=InnoDB; 
+0

Почему бы вам просто не попробовать? mysql лучше проверяет синтаксис, чем любой человек здесь – zerkms

+3

@zerkms Я спрашиваю об этом, потому что у меня есть электронная книга, которая показывает, что это правильный способ создания внешнего ключа - вопреки тому, что ** Дуг ** сказал _ Похоже, MySQL (не жалуется на синтаксис), но внешний ключ фактически не создан. Это не то, чему меня научил мой инструктор. Вот почему я пытался проверить, является ли этот способ приемлемым. – aer

ответ

15

Похоже, MySQL принимает его (не жалуется на синтаксис), но внешний ключ не создали.

Для создания внешнего ключа, выполните следующую команду:

ALTER TABLE employee ADD CONSTRAINT fk_department FOREIGN KEY (departmentID) REFERENCES department (departmentID); 
+0

Как насчет объяснения моей книги создания внешнего ключа. _ «В этом утверждении есть только один новый синтаксис: последний столбец в таблице employee - это идентификатор отдела, для которого работают сотрудники. Это внешний ключ. Мы объявляем это в определении таблицы, добавляя Предложение ссылки следующим образом: DepartmentID Int не нулевой отдел ссылок (DepartmentID) Это говорит нам о том, что DepartmentID в таблице сотрудников следует ссылаться обратно в колонну DepartmentID в таблице универмага "_ что вы можете сказать о. Это? – aer

+0

Это объяснение кодов, которые я предоставил. – aer

+2

Я сам пробовал код, и таблица была создана с вашим кодом, но целостность референции не была применена до тех пор, пока я не создавал внешний ключ отдельно, с кодом, который я предоставил в ответе. – Doug

2
create table employee 
(
    employeeID int not null auto_increment primary key, 
    name varchar(80), 
    job varchar(30), 
    departmentID int not null ADD CONSTRAINT fk_department FOREIGN KEY (departmentID) references department(departmentID) 
) 
+4

Добро пожаловать! почему этот ответ лучше, чем принятый, через 2 года? –

1
FOREIGN KEY (departmentID) REFERENCES department(departmentID) 

Спасибо.!

 Смежные вопросы

  • Нет связанных вопросов^_^