Я хочу, чтобы настроить механизм для отслеживания изменений DB схемы, такой описанной в this answer:Является ли каждая команда DDL SQL обратимой? [База данных управления версиями]
Для каждого изменения, внесенные в базу данных , вы пишете новую миграцию. Миграции обычно имеют два метода: метод «вверх», в котором применяются изменения , а метод «вниз» - в , изменения которого отменены. Одна команда возвращает базу данных до , а также может использоваться для приведения базы данных к определенной версии схемы.
Мой вопрос следующий: Является ли каждая команда DDL методом «вверх» обратимой? Другими словами, можем ли мы всегда предоставлять метод «вниз»? Можете ли вы представить какую-либо команду DDL, которая не может быть «опущена»?
Пожалуйста, не учитывайте типичную проблему миграции данных, когда во время метода «вверх» мы имеем потерю данных: например, изменяя тип поля от datetime
(DateOfBirth
) до int
(YearOfBirth
), мы теряем данные, которые невозможно восстановить.
Даже данные могут быть обратимыми, если вы храните их где-то как с локальными yml-файлами (см. Https://github.com/tomkurt/Reversable-Data-Migration). – 2012-02-12 16:20:55