PostgreSQL 9.1.1文書
前のページ | 巻戻し |  | 早送り | 次のページ

# ALTER FOREIGN TABLE

## 名前

ALTER FOREIGN TABLE -- 外部テーブルの定義を変更

## 概要

    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`は既存の外部テーブルの定義を変更します。 以下のように複数の副構文があります。

`ADD COLUMN`

  この構文は、CREATE FOREIGN TABLEと同じ文法を使用して、外部テーブルに新しい列を追加します。

`DROP COLUMN [ IF EXISTS ]`

  この構文は外部テーブルから列を削除します。 ビューなど何らかのその他のテーブルがこの列に依存する場合、`CASCADE`を付けなければなりません。 `IF EXISTS`が指定された場合、列が存在しなくてもエラーになりません。 この場合注意が代わりに発せられます。

`SET DATA TYPE`

  この構文は外部テーブルの列の型を変更します。

`SET`/`DROP NOT NULL`

  列にNULL値を許すか許さないかどうか印を付けます。

`OWNER`

  この構文は外部テーブルの所有者を指定ユーザに変更します。

`RENAME`

  `RENAME`構文は外部テーブルの名前または外部テーブル内の個々の列の名前を変更します。

`SET SCHEMA`

  この構文は外部テーブルを別のスキーマに移動します。

`OPTIONS ( [ ADD | SET | DROP ] `option` ['`value`'] [, ... ] )`

  外部テーブルに対するオプションを変更します。 `ADD`、`SET`、`DROP`は実行する操作を指定します。 明示的な操作指定がない場合`ADD`と仮定されます。 オプション名は一意でなければなりません。 また、名前と値は外部データラッパのライブラリを使用して検証されます。

`RENAME`および`SET SCHEMA`以外の操作はすべて、複数変更項目リストにまとめて並行に適用することができます。 例えば、複数の列の追加、複数の列の型変更、またはその両方を単一のコマンドで行うことができます。

`ALTER FOREIGN TABLE`を使用するためにはテーブルの所有者でなければなりません。 また外部テーブルのスキーマを変更するためには、新しいスキーマに対して`CREATE`権限を持っていなければなりません。 所有者を変更するためには、新しく所有者となるロールの直接的または間接的なメンバでなければなりません。 また新しく所有者となるロールはテーブルのスキーマに対して`CREATE`権限を持っていなければなりません。 （これらの制限により強制的に所有者の変更が、テーブルの削除と再作成を行ってもできないことを行わないようにします。）

## パラメータ

`name`

  変更対象の既存外部テーブルの名前（スキーマ修飾可）です。

`column`

  新しい列または既存の列の名前です。

`new_column`

  既存の列に対する新しい名前です。

`new_name`

  テーブルの新しい名前です。

`type`

  新しい列のデータ型、または既存の列に対する新しいデータ型です。

`CASCADE`

  削除される列に依存するオブジェクト（この列を参照するビューなど）を自動的に削除します。

`RESTRICT`

  何らかの依存するオブジェクトが存在する場合削除を拒否します。 これがデフォルトの動作です。

`new_owner`

  テーブルの新しい所有者のユーザ名です。

`new_schema`

  テーブルの移動先となるスキーマの名前です。

## 注意

`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');

## 互換性

`ADD`、`DROP`、`SET DATA TYPE`構文は標準SQLに準拠します。 他の構文は標準SQLに対するPostgreSQLの拡張です。 単一の`ALTER FOREIGN TABLE`コマンドに複数の操作を指定する機能も拡張です。

`ALTER FOREIGN TABLE DROP COLUMN`を用いて外部テーブルの列だけを削除してゼロ列のテーブルとして残すことができます。 これは拡張であり、SQLではゼロ列の外部テーブルを許しません。

前のページ | ホーム | 次のページ
ALTER FOREIGN DATA WRAPPER | 上に戻る | ALTER FUNCTION