Описание проблемы:
В нашем проекте есть одна "производственная база данных" и множество "разработчиков". Мы хотим знать, как мы можем управлять и устанавливать изменения. У нас уже есть несколько процедур, но это занимает много времени и иногда вызывает ошибки.
Мы не можем потерять данные - поэтому мы не можем использовать "drop table". Мы можем использовать только "alter table".
Наша фактическая "процедура управления версиями db" выглядит следующим образом:
- У нас есть таблица с именем [actual_version], которая содержит фактическую версию установленной схемы db
- У нас есть файл с именем "changes_script.sql", который содержит все изменения базы данных - этот файл хранится в SVN
Когда разработчик хочет совершить новую ревизию в SVN, ему необходимо сменить_script.sql, добавив блок:
if ([acctual_version].version < "23")) {
--- sql script ----
updateVersionTo("23")
end if
Когда мы хотим обновить схему базы данных, мы просто "выполним" change_scripts.sql
Есть ли у кого-то лучшее представление?