У меня есть база данных с несколькими десятками таблиц, связанных внешними ключами. При нормальных обстоятельствах я хочу поведение по умолчанию ON DELETE RESTRICT
для этих ограничений. Но при попытке поделиться снимком базы данных с консультантом, мне нужно было удалить некоторые конфиденциальные данные. Я бы хотел, чтобы моя память о команде DELETE FROM Table CASCADE
не была чистой галлюцинацией.
Я закончил тем, что сделал дамп базы данных, написал сценарий для обработки дампа, добавив в ON DELETE CASCADE
предложения также все ограничения внешнего ключа, восстановив его, выполнив мои удаления, сбросив дамп, удалив ON DELETE CASCADE
и, наконец, восстановление снова. Это было проще, чем написать запрос на удаление, который мне понадобился бы для этого в SQL - удаление целых фрагментов базы данных не является обычной операцией, поэтому схема не совсем адаптирована к нему.
У кого-нибудь есть лучшее решение в следующий раз, когда появится что-то подобное?