2017-02-15 4 views
0

Я создал 2 таблицы с родительской дочерней связью в MYSQL. Однако отношение внешних ключей не выполняется с кодом ошибки 1215. MAIN_ROLE может иметь много псевдонимов SUB_ROLE. SUB_ROLE имеет составной PRIMARY ключ (ID, MAIN_ID, SEQ_NUM). ГЛАВНЫЙ КЛЮЧ MAIN_ROLE является частью первичного ключа SUB_ROLES. Вот таблицы и мои ограничения:Внешние отношения MYSQL между родителями Ребенок

 create TABLE MAIN_ROLE(
     ID int NOT NULL AUTO_INCREMENT, 
    MAIN_ID int NOT NULL, 
    ASSIGNED_DATE datetime NULL, 
    MAIN_ROLE_NM varchar(50) NOT NULL, 
    PRIMARY KEY(ID,MAIN_ID) 
    ); 


    create TABLE SUB_ROLE(
    ID int NOT NULL, 
MAIN_ID int NOT NULL, 
SEQ_NUM decimal(15, 0) NOT NULL, 
SUB_ROLE_NM varchar(50) NOT NULL, 
PRIMARY KEY(ID,MAIN_ID,SEQ_NUM) , 
CONSTRAINT SUB_ROLE_FK REFERENCES MAIN_ROLE(ID,MAIN_ID,SEQ_NUM) 
    ); 

Может кто-то указать на то, что случилось с внешним ключом в моем сценарии? Пожалуйста помоги!

+0

Вы бы отсутствующий столбец seq_role в таблице main_role –

ответ

0

Это работало, скованность SUB_ROLE_FK FOREIGN KEY (ID, MAIN_ID) ОТЗЫВЫ MAIN_ROLE (ID, MAIN_ID)

1

Основная проблема заключается в том, что вы не следуете в MySQL foreign key syntax и что Вы ссылки на поле в родительской таблице, которая не существует:

  1. Вы не обеспечивают список полей из таблицы детского
  2. SEQ_NUM Поле не существует в основной таблице, только в под таблице.

Правильное внешнее Определение ключа будет выглядеть следующим образом:

CONSTRAINT SUB_ROLE_FK FOREIGN KEY (ID,MAIN_ID) REFERENCES MAIN_ROLE(ID,MAIN_ID) 

Однако, я не вижу ehat смысл, имеющее поле идентификатора автоматического приращения и main_id поля в главной таблице. Я бы подумал об этом.

+0

я не проектировал таблицу, к сожалению, так что у меня нет контролировать его. – BreenDeen

+0

Не работает для MySQL – BreenDeen

+0

Pls будет немного более конкретным относительно того, что именно вы пробовали, и с каким сообщением об ошибке/неожиданным поведением вы столкнулись. Не говоря уже о том, что я связался на соответствующей странице руководства для MySQL, поэтому, если в фактическом коде, который я предложил, есть некоторая незначительная синтаксическая/орфографическая ошибка, вы можете решить их самостоятельно. – Shadow

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

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