#sql-server-2008 #polymorphic-associations
#sql-сервер-2008 #полиморфные ассоциации
Вопрос:
У меня возникла проблема при создании таблицы со столбцом, который имеет две связи с внешним ключом. Позвольте мне объяснить подробно.
У меня есть три таблицы:
Table A
— столбцыID (primary key), Name
Table B
— столбцыID (primary key), Name
Table C
— столбцыID, Name, Detail
В C.Detail
я должен хранить данные из обеих других таблиц (A.ID amp; B.ID ). Поэтому я попытался добавить два внешних ключа в столбец C.Detail
. Во время операции вставки в Table B
возникает следующая ошибка, и такое же сообщение об ошибке возникает при попытке вставить данные Table A
в.
«Оператор INSERT конфликтовал с ограничением ВНЕШНЕГО КЛЮЧА «FK_C_A». Конфликт произошел в базе данных «X», таблице «dbo.A», столбце A.ID .»
Пожалуйста, кто-нибудь может помочь нам исправить эту проблему? Мы не хотим добавлять два столбца table C
для двух внешних ключей.
С надеждой жду ответа.
Комментарии:
1. Если у вас есть два внешних ключа , вам нужно иметь два столбца внешнего ключа в таблице — все остальное не работает.
Ответ №1:
Я предложу ввести два новых столбца в таблице C. (т.е. AID и BID). Создайте ключ Foregin в этих новостных столбцах.
Ответ №2:
Я могу ошибаться, но я думаю, что способ сделать это — создать «родительскую» таблицу для A и B, которая имеет A_B_parent.id (primary_key), а затем у A и B обоих есть внешние ключи в их идентификаторе для родительской таблицы. Тогда C также может иметь внешний ключ к родительской таблице.
Очевидно, что это оказывается действительно сложным, поэтому лучшим решением может быть просто программное обеспечение ограничения, а не использование внешних ключей, а затем добавление комментария к таблице.