【问题标题】:How to apply upgrade scripts to multiple PostgreSQL schema at once?如何一次将升级脚本应用于多个 PostgreSQL 模式?
【发布时间】:2023-03-19 04:26:01
【问题描述】:

我正在尝试在 PostgreSQL 上使用单数据库/多模式创建多租户 SaaS 应用程序。我想知道是否有办法在 PostgreSQL 中使用单个命令升级多个模式。

我正在寻找这样的东西:

CREATE TABLE tenants_*.users (id VARCHAR(255) PRIMARY KEY NOT NULL);

注意:我也在使用 Liquibase 进行架构迁移,但发现无法使用 Liquibase 进行多架构升级。

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: sql database postgresql liquibase saas


    【解决方案1】:

    在纯 SQL 中没有内置的方法来执行此操作,但您可以使用 plpgsql:

    DO
    $$
    DECLARE
        schemaname name;
    BEGIN
       FOR schemaname IN SELECT nspname FROM pg_namespace WHERE nspname LIKE 'tenants_%' LOOP
           EXECUTE format('CREATE TABLE %I.users (id text PRIMARY KEY);', schemaname);
       END LOOP;
    END;
    $$ LANGUAGE plpgsql;
    

    附带说明一下,您可能不希望有字符限制的 varchar 列,因为它在 PostgreSQL 中没有实际好处。只需使用文本,除非您出于某种原因确实希望将您的值截断为 255 个字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多