2016-02-14 2 views
0

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

Предположим, что я создал эти две таблицы:

CREATE TABLE employee (
id smallint(5) unsigned NOT NULL, 
firstname varchar(30), 
lastname varchar(30), 
birthdate date, 
PRIMARY KEY (id), 
KEY idx_lastname (lastname) 
) ENGINE=InnoDB; 

CREATE TABLE borrowed (
ref int(10) unsigned NOT NULL auto_increment, 
employeeid smallint(5) unsigned NOT NULL, 
book varchar(50), 
PRIMARY KEY (ref) 
) ENGINE=InnoDB; 

Тогда я некоторые изменения в заимствованных таблице

ALTER TABLE borrowed 
ADD CONSTRAINT FK_borrowed // line 1 
FOREIGN KEY (employeeid) REFERENCES employee(id) // line 2 
ON UPDATE CASCADE 
ON DELETE CASCADE; 

Line 1 добавить ограничение? какое ограничение?

Строка 2 делает «employeeid» заимствованной таблицы внешним ключом, который ссылается на «идентификатор» таблицы сотрудников, это все, что делает эта строка кода, правильно?

Так что мой вопрос в том, что означает строка 1? Он добавляет ограничение, которое не содержит ничего? Я новичок в MySQL.

+0

'FOREIGN KEY' сам является' CONSTRAINT' –

+0

внешний ключ определяется как «employeeid» в строке 2, так? @ PM77-1 – KKKK

+0

Все ваше заявление добавляет FOREIGN KEY. –

ответ

0

Строка 2 - это просто расширение линии 1. Внешним ключом является добавляемое ограничение.

+0

В чем разница между «employeeid» и «FK_borrowed», оба они являются иностранным ключом? – KKKK

+0

FK_borrowed - это имя ограничения/внешнего ключа. employeeid - это поле, которое ограничено. –

+0

oh ................... – KKKK

0

Это:

ALTER TABLE borrowed 
ADD CONSTRAINT FK_borrowed // line 1 
FOREIGN KEY (employeeid) REFERENCES employee(id) // line 2 
ON UPDATE CASCADE 
ON DELETE CASCADE; 

То же самое, как это:

ALTER TABLE borrowed ADD CONSTRAINT FK_borrowed FOREIGN KEY (employeeid) REFERENCES employee(id) ON UPDATE CASCADE ON DELETE CASCADE; 

Ваш внешнего ключа является Constraint, FK_borrowed является его имя, employeeid это столбец в таблице borrowed , employee и id - это стол и столбец, на которые вы ссылаетесь, соответственно.

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