我试图在PostgreSQL上使用单数据库/多模式创建多租户SaaS应用程序。我想知道是否有一种方法可以使用PostgreSQL中的单个命令升级多个模式。
我正在寻找类似的东西:
Notification
注意:我也使用Liquibase进行模式迁移,但发现无法使用Liquibase进行多模式升级。
任何帮助都将受到高度赞赏。感谢。
答案 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个字符。