Я ищу способ сценария изменения схемы postgreSQL идемпотентным способом.
В MSSQL я мог бы сделать что-то вроде этого:
if(not exists(select * from information_schema.columns where table_name = 'x' and column_name = 'y'))
begin
alter table x add y int
end
go
PostgreSQL, похоже, не допускает ad-hoc pl / pgsql таким же образом, как MSSQL делает с T-SQL, поэтому я не могу использовать управляющие структуры в сценарии SQL и запускать его с помощью psql -f x.sql.
Я знаю, что PostgreSQL выдаст ошибку, если объект уже существует, но я не хочу игнорировать ошибки.
Я мог бы использовать некоторую технику управления версиями схемы, такую как dbdeploy, но мне действительно нравится простота запуска набора файлов через psql без каких-либо нежелательных побочных эффектов.
Возможно ли это?
Спасибо,
Mark