Создание внешнего ключа в базе данных Java (Netbeans)

У меня возникли проблемы с созданием внешнего ключа в Java Db через Netbeans. Я почти уверен, что мне нужно использовать команду SQL, чтобы изменить атрибут в таблице PLAYERS на внешний ключ, поскольку я могу указать первичные ключи только через интерфейс. Я попытался выполнить эту команду:

ALTER TABLE PLAYERS ADD CONSTRAINT TEAMNUM_FK
Foreign Key (TEAMNUM) REFERENCES TEAM (TEAMNUM);

Предполагается добавить/изменить TEAMNUM в таблице PLAYERS на внешний ключ, связанный с первичным ключом в таблице TEAM, чтобы TEAMNUM был согласован в обеих таблицах, но это дает ошибку:

Код ошибки -1, состояние SQL X0Y44: ограничение "TEAMNUM_FK" недопустимо: в таблице "APP"."TEAM" отсутствует ограничение уникальности или первичного ключа, которое соответствует количеству и типам столбцов во внешнем ключе. Строка 1, столбец 1

Если бы кто-нибудь мог помочь, это было бы здорово. Благодарю.


person Keith Edwards    schedule 18.01.2012    source источник


Ответы (2)


Сообщение об ошибке довольно ясное:

либо для таблицы TEAM не определен первичный ключ, либо PK состоит из столбцов, отличных от (teamnum), либо тип данных столбца teamnum в PLAYERS не соответствует типу данных столбца teamnum в таблице team.

Поскольку вы показали свои определения таблиц, я не могу сказать, какая из трех альтернатив, которые объясняются сообщениями об ошибках, имеет отношение к вашему случаю.

person a_horse_with_no_name    schedule 18.01.2012
comment
О, большое спасибо за это, мне удалось исправить это сейчас, однако я получаю новую ошибку: код ошибки -1, состояние SQL X0Y45: ограничение внешнего ключа «TEAMNUM» не может быть добавлено или включено для таблицы PLAYERS, потому что один или несколько внешние ключи не имеют соответствующих ссылочных ключей. Ты хоть представляешь, что сейчас не так? Спасибо. Строка 1, столбец 1 - person Keith Edwards; 19.01.2012

Это правильный способ сделать это, после создания таблицы в среде IDE netbeans выберите таблицу TEAM и щелкните правой кнопкой мыши внешние ключи, выберите команду выполнить и вставьте код ниже.

Alter Table APP.PLAYERS
Add FOREIGN KEY (TEAMNUM_FK)
References APP.TEAM (TEAMNUM);   

Затем снова выберите таблицу Team и выберите «Обновить».

ps: предположим, что APP является вашей схемой по умолчанию

person Community    schedule 01.06.2014