我希望能够对我的postgresql模式进行版本控制,以便如果我们推出一个新修订版,它将只添加该修订版的新更改。示例:如果当前修订为1,并且我想在现有表的修订2中添加一列,我想执行以下操作:
IF (SELECT get_current_revision()) < 2 THEN
ALTER TABLE Foo ADD COLUMN bar varchar(32);
END IF;
get_current_revision()函数仅查询版本表中的当前修订版(设置为1)(即,如果该表不存在,则该函数返回0或实际的当前修订版)。
但是当我执行这种脚本时,出现错误“在'if'或附近的语法错误”。因此,我认为您不能以独立方式执行这样的if语句。有人有什么建议吗?
答案 0 :(得分:2)
您可以使用匿名代码块:
DO $$
<<first_block>>
DECLARE
BEGIN
IF (SELECT get_current_revision()) < 2 THEN
ALTER TABLE Foo ADD COLUMN bar varchar(32);
END IF;
END first_block $$;