|
|||||||
Как в PostgreSQL сохранить номер версии структуры базы данных или таблицы?
Время создания: 18.10.2023 15:24
Текстовые метки: postgresql, sql, номер версии, версия, таблица, база данных, БД, миграция
Раздел: Компьютер - Программирование - SQL - PostgreSQL
Запись: xintrea/mytetra_syncro/master/base/1697631878rl0c4sa5fp/text.html на raw.github.com
|
|||||||
|
|||||||
Миграция БД - это процесс изменения структуры и содержимого базы данных в ходе изменения и развития кода какого-либо проекта. В процессе доработки проекта, часто в БД появляются новые таблицы, удаляются устревшие. В таблицах появляются новые столбцы или переделываются на другой тип хранимых значений. Появляются новые индексные поля, и устанавливаются новые связи по ключу между таблицами. Чтобы все это менялось всместе с кодом программы, и придумана подсистема миграций. При необходимости, простейшую систему миграции можно написать самостоятельно. Однако, при создании самопальной системы миграции БД, встает вопрос: где и как хранить актуальный номер версии базы данных и отдельной таблицы? Сохранять в файл? Создавать специальную таблицу? Нет, в PostgreSQL все гораздо проще, и для этих целей можно использовать комментарии. Комментарий - это текстовая информация в виде одной строки, которая соответствует какому-либо объекту в движке базы данных. Таким объектом может быть практически что угодно в системе PostgreSQL, но главное, что комментарий можно добавлять к базам данных и к таблицам. Ниже даны примеры добавления комментариев. Как хранить версию таблицы ourtable: COMMENT ON TABLE ourtable IS 'version 10'; Как хранить версию БД ourdatabase: COMMENT ON DATABASE ourdatabase IS 'version 20'; Если есть простые и понятные команды установки версии, то наверно есть подобные команды получения версии? А вот и нет. Возможно, в будущем, такие команды появятся, но в PostgreSQL 9.6 их просто нет. И чтобы достать информацию о версии, надо выковыривать ее из системных таблиц. Как получить версию таблицы ourtable: SELECT obj_description(oid) FROM pg_class WHERE relkind='r' AND relname='ourtable'; Как получить версию БД ourdatabase: SELECT pg_catalog.shobj_description(d.oid, 'pg_database') AS "Description" FROM pg_catalog.pg_database d WHERE datname = 'ourdatabase'; Таким образом, версию структуры БД или таблицы можно сохранять практически прямо в самой БД или таблице, что, безусловно, очень удобно. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|