Наличие двух внешних ключей в одном столбце - PullRequest
0 голосов
/ 11 октября 2011

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

У меня есть три таблицы:

  • Table A - столбцы ID (primary key), Name
  • Table B - столбцы ID (primary key), Name
  • Table C - столбцы ID, Name, Detail

В C.Detail Я должен хранить данные из обеих других таблиц (A.ID и B.ID). Поэтому я попытался добавить два внешних ключа в столбец C.Detail. Во время операции вставки в Table B возникает следующая ошибка, и то же сообщение об ошибке появляется при попытке вставить данные в Table A.

"Оператор INSERT конфликтует с ограничением FOREIGN KEY "FK_C_A". Конфликт произошел в базе данных "X", таблица "dbo.A", столбец A.ID. "

Пожалуйста, кто-нибудь может помочь нам решить эту проблему? Мы не хотим добавлять два столбца в table C для двух внешних ключей.

Надеюсь дождаться ответа.

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Я предлагаю ввести две новые колонки в Таблицу C. (т.е. AID и BID). Создайте ключ Foregin для этой колонки новостей.

0 голосов
/ 11 октября 2011

Я могу ошибаться, но я думаю, что для этого нужно создать "родительскую" таблицу для A и B, которая имеет A_B_parent.id (primary_key), а затем A и B имеют внешние ключи на своих идентификатор родительской таблицы. Тогда C также может иметь внешний ключ для родительской таблицы.

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

...