如何根据布尔值更改表?

时间:2019-07-15 20:49:12

标签: sql postgresql

我希望能够对我的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语句。有人有什么建议吗?

1 个答案:

答案 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 $$;

db<>fiddle demo