ALTER FOREIGN TABLE name
action [, ... ]
ALTER FOREIGN TABLE name
RENAME [ COLUMN ] column TO new_column
ALTER FOREIGN TABLE name
RENAME TO new_name
ALTER FOREIGN TABLE name
SET SCHEMA new_schema
ここでactionは以下のいずれかです。
ADD [ COLUMN ] column type [ NULL | NOT NULL ]
DROP [ COLUMN ] [ IF EXISTS ] column [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] column [ SET DATA ] TYPE type
ALTER [ COLUMN ] column { SET | DROP } NOT NULL
OWNER TO new_owner
OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ])
ALTER FOREIGN TABLEは既存の外部テーブルの定義を変更します。 以下のように複数の副構文があります。
この構文は、CREATE FOREIGN TABLEと同じ文法を使用して、外部テーブルに新しい列を追加します。
この構文は外部テーブルから列を削除します。 ビューなど何らかのその他のテーブルがこの列に依存する場合、CASCADEを付けなければなりません。 IF EXISTSが指定された場合、列が存在しなくてもエラーになりません。 この場合注意が代わりに発せられます。
この構文は外部テーブルの列の型を変更します。
列にNULL値を許すか許さないかどうか印を付けます。
この構文は外部テーブルの所有者を指定ユーザに変更します。
RENAME構文は外部テーブルの名前または外部テーブル内の個々の列の名前を変更します。
この構文は外部テーブルを別のスキーマに移動します。
外部テーブルに対するオプションを変更します。 ADD、SET、DROPは実行する操作を指定します。 明示的な操作指定がない場合ADDと仮定されます。 オプション名は一意でなければなりません。 また、名前と値は外部データラッパのライブラリを使用して検証されます。
RENAMEおよびSET SCHEMA以外の操作はすべて、複数変更項目リストにまとめて並行に適用することができます。 例えば、複数の列の追加、複数の列の型変更、またはその両方を単一のコマンドで行うことができます。
ALTER FOREIGN TABLEを使用するためにはテーブルの所有者でなければなりません。 また外部テーブルのスキーマを変更するためには、新しいスキーマに対してCREATE権限を持っていなければなりません。 所有者を変更するためには、新しく所有者となるロールの直接的または間接的なメンバでなければなりません。 また新しく所有者となるロールはテーブルのスキーマに対してCREATE権限を持っていなければなりません。 (これらの制限により強制的に所有者の変更が、テーブルの削除と再作成を行ってもできないことを行わないようにします。)
変更対象の既存外部テーブルの名前(スキーマ修飾可)です。
新しい列または既存の列の名前です。
既存の列に対する新しい名前です。
テーブルの新しい名前です。
新しい列のデータ型、または既存の列に対する新しいデータ型です。
削除される列に依存するオブジェクト(この列を参照するビューなど)を自動的に削除します。
何らかの依存するオブジェクトが存在する場合削除を拒否します。 これがデフォルトの動作です。
テーブルの新しい所有者のユーザ名です。
テーブルの移動先となるスキーマの名前です。
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');