В задачи администратора БД входит координирование последовательности изменений. И большим плюсом PostgreSQL в данном случае является система транзакций, когда почти все изменения можно выполнить в рамках одной транзакции. Это позволяет создать такой скрипт, который будет выполняться либо полностью, либо никак. Для рабочей системы это может быть очень важно.
Транзакции применяются к DDL, то есть к набору команд SQL для определения, изменения и удаления объектов баз данных. Термин DDL уже довольно старый, но его до сих пор используют как удобную замену названий команд, необходимых любому администратору: Create, alter, drop и т. п. Если хотя бы одна команда в скрипте вызовет сообщение об ошибке или что-то более серьезное, скрипт не будет выполнен. Практически все команды SQL, определяющие объекты, позволяют избежать ошибок сброса.
Как правило, у команд, начинающихся с drop, есть опция if exists, что позволяет выполнять команду drop вне зависимости от того, существует ли такой объект. После выполнения команды его в любом случае не будет. Аналогично у команды Create Есть опциональный суффикс Or replace. Таким образом, если определение уже существует, его можно переписать, если нет — создать новое: Можно подумать, что если есть Drop if exists и create or replace, То достаточно использования Create or replace. Однако, если вы изменяете определение результата функции или представления, то необходимо сначала использовать Drop, А затем Create:
PostgreSQL берет первый begin и первый commit . Таким образом, если вы хотите использовать в скрипте команды транзакций, создание обертки более высокого уровня может вызвать проблемы. Но ни одно из этих действий не нужно производить регулярно, вручную или в составе более сложных программ, так что дополнительных проблем возникнуть не должно.
Рубрика: Женский интерес