PostgreSQL不允许

ALTER TABLE t RENAME COLUMN IF EXISTS c1 TO c2

...或者诸如此类的.然而,编写修改DB struct 的脚本非常方便,无需首先判断是否已经运行,就可以再次运行.

如何编写PostgreSQL函数来实现这一点?

推荐答案

详细解释请阅读这article页.

DO $$
BEGIN
  IF EXISTS(SELECT *
    FROM information_schema.columns
    WHERE table_name='your_table' and column_name='your_column')
  THEN
      ALTER TABLE "public"."your_table" RENAME COLUMN "your_column" TO "your_new_column";
  END IF;
END $$;

Postgresql相关问答推荐

PostgreSQL plpgsql函数问题

select语句的Jooq代码生成

执行准备好的语句不返回数据

对表执行 DISABLE TRIGGER ALL 是否也会禁用 FK 指向该表?

如何在docker-compose中使用docker secrets设置ConnectionString?

Upper() 不会大写重音字符

如何计算过滤器中的百分比

Regexp_replace 行为会改变,如果它用空白字符串或 null 替换字符串数组中的字符串

查询仅属于特定部门的用户

从 PostgreSQL 中的字段中提取数字

在这个 Dockerfile 中创建的 Postgres 用户名/密码在哪里?

从 Select 中创建一个临时表,如果表已经存在则插入

如何在psql中退出查询结果查看器?

为 Django Postgres 连接强制 SSL

丢弃顺序和级联

Rails ActiveRecord - 如何获取两个日期之间的记录

如何在 plpgsql 中使用记录类型变量?

如何禁用 postgresql缓存优化?

使用 Hibernate 查询:colon gets treated as parameter / escaping colon

获取 psycopg2 count(*) 结果数