Удалить записи из реляционной базы данных без каскада - PullRequest
0 голосов
/ 30 октября 2019

Мне нужно удалить записи из реляционной базы данных, где я пытаюсь начать с самых младших дочерних элементов в базе данных. Я не очень силен в том, как подойти к задаче. Я не хочу делать CASCADE delete, я на самом деле хочу сделать противоположное CASCADE. Правильно ли, что мне нужно найти объект, у которого нет дочернего элемента, и начать удалять записи там? и что, если у сущности есть более одного внешнего ключа, как мне решить, с какой родительской таблицы я должен начать удалять?

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Вы не указываете, какая база данных и какие инструменты у вас под рукой.

Вы можете вручную составить схему базы данных на основе внешних ключей или использовать инструмент, такой как Visual Studio, для построения схемы вашей базы данных.

Пока множество внешних связей не зависят друг от друга, не должно иметь значения, с чего начать.

Джина

0 голосов
/ 30 октября 2019

Сначала вы должны удалить дочерние записи. Если вы попытаетесь удалить запись, на которую ссылается внешний ключ, вы получите ошибку, которая должна указывать, какой ключ имеет конфликт. Затем вы можете увидеть, какая дочерняя таблица затронута, и удалить записи, ссылающиеся на внешний ключ, а затем повторить попытку.

Вы просто продвигаетесь вверх по цепочке. Если более одной дочерней записи ссылается на родительскую запись, сначала вы просто удалите все дочерние записи. Если дочерняя запись ссылается на более чем одну родительскую запись, не имеет значения, какой родитель удаляется первым (или вообще удаляется).

...