Я не знаю такого инструмента.По крайней мере, вы знаете об опасностях ссылочной целостности.Так зачем заставлять себя страдать?Просто используйте ссылки на внешние ключи в первую очередь, как предлагает dportas.
Чтобы использовать его в миграции, добавьте что-то вроде этого:
execute('ALTER TABLE users ADD FOREIGN KEY (language_id) REFERENCES languages(id)')
, чтобы столбец language_id пользователей ссылался надопустимая строка в таблице языков.
В зависимости от вашей СУБД это даже автоматически создаст для вас индекс.Есть также плагины для rails (см. Pg_on_rails), которые определяют простые в использовании функции псевдонимов для этих задач.
Проверка целостности только в файле резервной копии не имеет смысла, так как ошибка уже произошла, и ваши данныеможет быть уже испорчен.(Я был там) С другой стороны, при использовании ограничений внешнего ключа, как указано выше, каждая операция, которая нарушит целостность, будет неудачной.
Думайте об этом, как об обращении к стоматологу, когда вы чувствуете боль(= хирургическое вмешательство) вместо чистки зубов ОДНАЖДЫ волшебной зубной пастой, которая гарантирует, что ваши зубы будут в порядке до конца жизни.
Еще одна вещь, которую следует учитывать: ошибка в вашем приложении будет многоего легче найти, потому что в коде, который пытается вставить поврежденные данные, возникнет исключение.
Поэтому, пожалуйста, используйте ограничения внешнего ключа.Вы можете легко добавить эти заявления в вашу существующую базу данных.