УДАЛИТЬ запрос на строку с вложенными внешними ключами - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть Таблица A, на которую ссылается Таблица B, а Таблица C содержит ссылки на Таблицу B.

Так, что:

  • Таблица A (pk: id)
  • Таблица B (pk: id, fk: A_id)
  • Таблица C (fk: B_id)

Каждый внешний ключ имеет ограничение ON_DELETE: CASCADE, однакоесли я попытался удалить Таблицу А - она ​​отказывается.Это происходит потому, что строки в таблице B имеют внешние ключи, указывающие на таблицу A, а в таблице C есть строки, указывающие на таблицу B.

Я уверен, что смогу решить эту проблему, сначала удалив таблицу B, а затемудаление таблицы А. Однако кто-нибудь объяснит, почему это УДАЛЕНИЕ невозможно?Конечно, он должен быть в состоянии выполнить функцию перехода по «иерархии» внешних ключей и удаления всего по порядку?

Спасибо

1 Ответ

0 голосов
/ 13 ноября 2018

В операции ON DELETE CASCADE, если родительская строка удаляется, она сначала удалит дочернюю строку, а затем родительскую строку, чтобы убедиться, что в качестве внешнего ключа не осталось ссылок

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

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