無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

ALTER FOREIGN TABLE

名前

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

概要

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

 [ COLLATE 

collation

 ] [ 

column_constraint

 [ ... ] ]
    DROP [ COLUMN ] [ IF EXISTS ] 

column_name

 [ RESTRICT | CASCADE ]
    ALTER [ COLUMN ] 

column_name

 [ SET DATA ] TYPE 

data_type


    ALTER [ COLUMN ] 

column_name

 SET DEFAULT 

expression


    ALTER [ COLUMN ] 

column_name

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

ADD COLUMN

この構文は、 CREATE FOREIGN TABLE と同じ文法を使用して、外部テーブルに新しい列を追加します。 通常のテーブルに列を追加する場合と異なり、背後のストレージには何も起こりません。 この操作は単に、外部テーブルを通して何らかの新しい列がアクセスできるようになることを宣言します。

DROP COLUMN [ IF EXISTS ]

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

IF EXISTS

外部テーブルが存在しない場合でもエラーとしません。 この場合注意メッセージが発生します。

SET DATA TYPE

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

SET / DROP DEFAULT

この構文は列に対するデフォルト値の設定または削除を行います。 デフォルト値はその後に行われる INSERT または UPDATE コマンドにて適用されます。 すでにテーブル内に存在する行の変更は行われません。

SET / DROP NOT NULL

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

SET STATISTICS

この構文は、この後の ANALYZE 操作における列単位の統計情報収集対象を設定します。 詳細については ALTER TABLE の類似の構文を参照してください。

SET ( attribute_option = value [, ... ] )
RESET ( attribute_option [, ... ] )

この構文は属性単位のオプションを設定または未設定状態にします。 詳細については ALTER TABLE における類似の構文を参照してください。

OWNER

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

RENAME

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

SET SCHEMA

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

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

外部テーブルもしくはその列の1つに対するオプションを変更します。 ADD SET DROP は実行する操作を指定します。 明示的な操作指定がない場合 ADD と仮定されます。 重複したオプション名は許されません。 (しかしテーブルオプションと列オプションとで同じ名前を持たせることは問題ありません。) またオプションの名前と値は外部データラッパのライブラリを使用して検証されます。

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

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

パラメータ

name

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

column_name

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

new_column_name

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

new_name

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

data_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ではゼロ列の外部テーブルを許しません。


powered by SEO.CUG.NET