現在のスキーマの設定

現在のスキーマを変更するには、SET SCHEMA コマンドを使用します。

mydb.admin(admin)=> SET SCHEMA schema_one;
SET SCHEMA
mydb.schema_one(admin)=>

トランザクション・ブロック内またはストアード・プロシージャーの本体の内部でコマンドを使用する場合は、別の SET SCHEMA コマンドを発行して現在のスキーマを再変更しない限り、トランザクション・ブロックまたはプロシージャーの残りの部分でも、このスキーマが有効なままになります。

current_tx_schema 組み込み関数を使用して、現在のトランザクション・スキーマの値を返すことができます。 明示的なトランザクション・ブロックまたはプロシージャーの本体内で SET SCHEMA コマンドを使用していない場合、current_tx_schema 関数はヌル値を返します。 明示的なトランザクション内のスキーマの動作を示す一連のコマンドを以下に示します。

MYDB.RED(ADMIN)=> BEGIN;
BEGIN

MYDB.RED(ADMIN)=> select current_schema;
CURRENT_SCHEMA
----------------
RED
(1 row)

MYDB.RED(ADMIN)=> select current_tx_schema;
CURRENT_TX_SCHEMA
-------------------
(1 row)

MYDB.RED(ADMIN)=> set schema blue;
SET SCHEMA

MYDB.RED(ADMIN)=> select current_tx_schema;
CURRENT_TX_SCHEMA
-------------------
BLUE
(1 row)
...

このサンプル・コマンドに示したように、明示的なトランザクション内でスキーマが変更されても、セッションはそのスキーマを RED のまま保持します。 current_tx_schema 関数を使用して、トランザクション・ブロックまたはプロシージャー本体の現在のスキーマを表示できます。