如何一次将升级脚本应用于多个PostgreSQL架构?

时间:2016-09-07 17:11:31

标签: sql database postgresql liquibase saas

我试图在PostgreSQL上使用单数据库/多模式创建多租户SaaS应用程序。我想知道是否有一种方法可以使用PostgreSQL中的单个命令升级多个模式。

我正在寻找类似的东西:

Notification

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

任何帮助都将受到高度赞赏。感谢。

1 个答案:

答案 0 :(得分:2)

在纯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个字符。