【发布时间】:2010-10-18 10:14:08
【问题描述】:
我正在寻找一种以幂等方式编写 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 似乎不像 MSSQL 对 T-SQL 那样允许 ad-hoc pl/pgsql,所以我不能在 SQL 脚本中使用控制结构并使用 psql -f x.sql 运行它。
我知道如果对象已经存在,PostgreSQL 会抛出错误,但我不想忽略错误。
我可以使用一些模式版本控制技术,例如 dbdeploy,但我真的很喜欢通过 psql 运行一组文件而不会产生任何不必要的副作用的简单性。
这可能吗?
谢谢, 标记
【问题讨论】:
标签: database postgresql plpgsql