2016-09-07 6 views
1

PostgreSQLで1データベース/複数スキーマを使用して複数テナントSaaSアプリケーションを作成しようとしています。私はPostgreSQLで単一のコマンドを使用して複数のスキーマをアップグレードする方法があるのだろうかと思っていました。アップグレードスクリプトを複数のPostgreSQLスキーマに一度に適用する方法は?

私はこのような何かを探しています:

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

注:私も自分のスキーマの移行のためのLiquiBaseをを使用してますがLiquiBaseをを使用して複数のスキーマ・アップグレードのことをやってのない方法を見つけたんです。

ご協力いただければ幸いです。ありがとう。

答えて

2

あり、プレーンSQLでこれを行うには、組み込みの方法はませんが、あなたはplpgsqlが使用できます。それは持っているとして、あなたはおそらく文字制限でvarchar列を望んでいない。注側として

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; 

をPostgreSQLでは実用的なメリットはありません。何らかの理由で実際に値が255文字に切り捨てられない限り、テキストを使用してください。

関連する問題