Mysql, убирать свободные концы - PullRequest
0 голосов
/ 02 февраля 2012

Есть ли какой-нибудь хороший автоматический способ / программа для очистки моей базы данных? У меня есть пара таблиц с отношениями, которые в некоторых случаях просто указывают на несуществующие записи.

1 Ответ

3 голосов
/ 02 февраля 2012

Похоже, что вам не хватает некоторых Ограничений внешнего ключа .
В зависимости от параметра ON DELETE потерянные записи будут удаляться вместе со ссылками на записи, ссылки на столбцы которых установлены на NULL, илиудаление будет отклонено.

Вам нужно будет удалить эти существующие записи вручную, используя запрос, подобный этому, перед созданием ограничений:

DELETE FROM table_a
WHERE ref_b IS NOT NULL
  AND NOT EXISTS ( SELECT 1 FROM table_b WHERE table_b.id = table_a.ref_b )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...