Я немного старомоден, так как использую исходные файлы для создания базы данных. На самом деле существует 2 файла - project-database.sql и project-updates.sql - первый для схемы и постоянных данных, а второй для изменений. Конечно, оба находятся под контролем источников.
Когда база данных изменяется, я сначала обновляю основную схему в project-database.sql, затем копирую соответствующую информацию в project-updates.sql, например, в инструкции ALTER TABLE.
Затем я могу применить обновления к базе данных разработки, протестировать, выполнить итерацию, пока все не будет сделано хорошо.
Затем проверьте файлы, повторите проверку и примените к производству.
Кроме того, у меня обычно есть таблица в db - Config - такая как:
SQL
CREATE TABLE Config
(
cfg_tag VARCHAR(50),
cfg_value VARCHAR(100)
);
INSERT INTO Config(cfg_tag, cfg_value) VALUES
( 'db_version', '$Revision: $'),
( 'db_revision', '$Revision: $');
Затем я добавляю следующее в раздел обновления:
UPDATE Config SET cfg_value='$Revision: $' WHERE cfg_tag='db_revision';
db_version
изменяется только при воссоздании базы данных, а db_revision
дает мне указание на то, как далеко БД от базовой линии.
Я мог бы хранить обновления в отдельных файлах, но я решил объединить их все вместе и использовать метод «вырезать и вставить» для извлечения соответствующих разделов. Для того, чтобы заморозить их, нужно добавить немного служебных действий, то есть удалить ':' из $ Revision 1.1 $.