sql - 如何根据 bool 值更改表格?

标签 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 语句。有人有什么建议吗?

最佳答案

你可以使用匿名代码块:

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

关于sql - 如何根据 bool 值更改表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57047009/

相关文章:

sql - T/SQL - 时间相关计算

mysql - 基于特定 SQL 组的列表

sql - 如何使用内连接查询获取不同且最新的记录

PHP pdo 异常 "could not find driver"pgsql

sql - 查找仅包含特定值的行

postgresql - 模拟 AKS 中的应用程序与 Azure 中的 PostgreSQL 服务器之间的网络延迟

mysql - 如何在数据集中生成值

sql - 如何简单地加入 Rails 中的 n 对 n 关联?

PostgreSQL:连接大表的小子集的最佳方式

postgresql - 使用非唯一键的 Postgres 分页?