2013-07-06 2 views
0

Первая часть моего вопроса:MySQL 1 внешний ключ ссылается 2 первичный

table1 
ID (PRIMARY) 

table2 
ID (PRIMARY) 

table3 
IDleglo (FOREIGN KEY) 

Вот моя ситуация. У меня есть 2 идентификатора из разных таблиц, и они являются первичными ключами, автоматически увеличиваются. На третьей таблице (таблица 3) у меня есть IDleglo как внешний ключ, который ссылается на ID из таблицы 1 и таблицы2.

Проблема Если я изменить таблицы и сделать:

FOREIGN KEY (IDleglo) REFERENCES table1(ID) 
     ON UPDATE CASCADE 
     ON DELETE CASCADE 
FOREIGN KEY (IDleglo) REFERENCES table2(ID) 
     ON UPDATE CASCADE 
     ON DELETE CASCADE 

Как база данных будет знать, какое значение в IDleglo от ID (table1) и который с ID (table2). Причина: я могу обновить ID (table1), и он обновит IDleglo, где ID = IDleglo, но может повлиять на значения, которые IDleglo получил из ID (таблица 2).

Вторая часть моего вопроса: Что это значит, например ADD CONSTRAINT FK_borrowed

ответ

1

Столбец имеет только одно значение. Если вы измените идентификатор в таблице 1, изменение будет каскадным в таблицу3. Если новое значение id еще не присутствует в таблице 2, вы получите сообщение об ошибке, поскольку внешний ключ нарушен.

Вторая часть вашего вопроса, вы можете прочитать об ограничениях здесь: http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

+0

Если изменить идентификатор в table1 изменение каскадировано Table3, почему это должно влиять на TABLE2-х ID? – FosAvance

+0

Второй внешний ключ требует, чтобы идентификатор в таблице 3 присутствовал в таблице 2. – Joni

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