ALTER FOREIGN TABLE [ IF EXISTS ] name
action [, ... ]
ALTER FOREIGN TABLE [ IF EXISTS ] name
RENAME [ COLUMN ] column_name TO new_column_name
ALTER FOREIGN TABLE [ IF EXISTS ] name
RENAME TO new_name
ALTER FOREIGN TABLE [ IF EXISTS ] name
SET SCHEMA new_schema
ここでactionは以下のいずれかです。
ADD [ COLUMN ] column_name data_type [ NULL | NOT NULL ]
DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
ALTER [ COLUMN ] column_name SET STATISTICS integer
ALTER [ COLUMN ] column_name SET ( attribute_option = value [, ... ] )
ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
ALTER [ COLUMN ] column_name OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ])
OWNER TO new_owner
OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ])
ALTER FOREIGN TABLEは既存の外部テーブルの定義を変更します。 以下のように複数の副構文があります。
この構文は、CREATE FOREIGN TABLEと同じ文法を使用して、外部テーブルに新しい列を追加します。
この構文は外部テーブルから列を削除します。 ビューなど何らかのその他のテーブルがこの列に依存する場合、CASCADEを付けなければなりません。 IF EXISTSが指定された場合、列が存在しなくてもエラーになりません。 この場合注意が代わりに発せられます。
外部テーブルが存在しない場合でもエラーとしません。 この場合注意メッセージが発生します。
この構文は外部テーブルの列の型を変更します。
列にNULL値を許すか許さないかどうか印を付けます。
この構文は、この後のANALYZE操作における列単位の統計情報収集対象を設定します。 詳細についてはALTER TABLEの類似の構文を参照してください。
この構文は属性単位のオプションを設定または未設定状態にします。 詳細についてはALTER TABLEにおける類似の構文を参照してください。
この構文は外部テーブルの所有者を指定ユーザに変更します。
RENAME構文は外部テーブルの名前または外部テーブル内の個々の列の名前を変更します。
この構文は外部テーブルを別のスキーマに移動します。
外部テーブルもしくはその列の1つに対するオプションを変更します。 ADD、SET、DROPは実行する操作を指定します。 明示的な操作指定がない場合ADDと仮定されます。 重複したオプション名は許されません。 (しかしテーブルオプションと列オプションとで同じ名前を持たせることは問題ありません。) またオプションの名前と値は外部データラッパのライブラリを使用して検証されます。
RENAMEおよびSET SCHEMA以外の操作はすべて、複数変更項目リストにまとめて並行に適用することができます。 例えば、複数の列の追加、複数の列の型変更、またはその両方を単一のコマンドで行うことができます。
ALTER FOREIGN TABLEを使用するためにはテーブルの所有者でなければなりません。 また外部テーブルのスキーマを変更するためには、新しいスキーマに対してCREATE権限を持っていなければなりません。 所有者を変更するためには、新しく所有者となるロールの直接的または間接的なメンバでなければなりません。 また新しく所有者となるロールはテーブルのスキーマに対してCREATE権限を持っていなければなりません。 (これらの制限により強制的に所有者の変更が、テーブルの削除と再作成を行ってもできないことを行わないようにします。) 列の追加または列の型の変更を行うためには、そのデータ型に対するUSAGE権限も必要です。
変更対象の既存外部テーブルの名前(スキーマ修飾可)です。
新しい列または既存の列の名前です。
既存の列に対する新しい名前です。
テーブルの新しい名前です。
新しい列のデータ型、または既存の列に対する新しいデータ型です。
削除される列に依存するオブジェクト(この列を参照するビューなど)を自動的に削除します。
何らかの依存するオブジェクトが存在する場合削除を拒否します。 これがデフォルトの動作です。
テーブルの新しい所有者のユーザ名です。
テーブルの移動先となるスキーマの名前です。
COLUMNキーワードはノイズであり、省略可能です。
ADD COLUMNまたはDROP COLUMNにより列が追加、削除された時、NOT NULL制約が追加された時、SET DATA TYPEにより列の型が変更された時、外部サーバとの一貫性は検査されません。 確実にテーブル定義をリモート側に合わせることはユーザの責任です。
有効なパラメータに関する詳しい説明についてはCREATE FOREIGN TABLEを参照してください。
列を非NULLと印付けします。
ALTER FOREIGN TABLE distributors ALTER COLUMN street SET NOT NULL;
外部テーブルのオプションを変更します。
ALTER FOREIGN TABLE myschema.distributors OPTIONS (ADD opt1 'value', SET opt2, 'value2', DROP opt3 'value3');