Лучший дизайн БД для родительско-дочерней таблицы и производного ключа foregin При удалении Cascade - PullRequest
0 голосов
/ 11 октября 2019

В следующих случаях я получаю сообщение об ошибке от SQL-сервера, из-за которого невозможно удалить внешний ключ при удалении:

TABLE1: функция

  • PK: Id
  • Имя
  • Категория
  • FK: To_Same_Table_Id NULLABLE («функция может иметь дочернюю функцию»)

ТАБЛИЦА 2: атрибуты

  • PK_Id
  • FK_To_TAble 1 При каскаде удаления (не обнуляемый, поскольку он всегда выводится из таблицы 1) (функция имеет несколько атрибутов) (и еслифункция удаляется, а затем ее атрибуты должны быть удалены)

SQL Server отказывается вводить FK, так как жалуется, что может вызвать связи с циркуляром. Введение ограничения FOREIGN KEY 'FK_TABLE2_Table1Id' в таблицу 'TABLe2' может привести к возникновению циклов или нескольких каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION, или измените другие ограничения FOREIGN KEY.

Я думаю, что причина этого в том, что если таблица 1 "1" будет удалена, то таблица 2 "1,2,3 "удалить, но, поскольку если в таблице 1 запись 1 имеет ссылку на" 2 ", она также удалит" 2 ", если" 2 "будет иметь ссылку также на конкретную таблицу 2, то она будет круглой.

Итак, я понимаю проблему, но ... я ищу ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...