ADD COLUMN
This form adds a new column to the table, using same syntax as CREATE TABLE.
DROP COLUMN
This form dropped a column from a table. その列を含むインデックスとテーブル制約も自動的に削除されます。 例えば、外部キー参照やビューなど、テーブル外の何かが列に依存している場合、CASCADEと言う必要があります。 IF EXISTS が指定され、その列が存在しない場合、エラーは発生しません。 この場合、代わりに通知が発行される。
SET DATA TYPE
この形式は、テーブルの列の型を変更する。 列を含むインデックスと単純なテーブル制約は、元々提供されていた式を解析し直すことにより、新しい列型を使用するように自動的に変換されます。 省略された場合、照合順序は新しい列タイプに対するデフォルトとなります。 省略された場合、デフォルトの変換は、古いデータ型から新しいデータ型への代入キャストと同じになります。
SET/DROP DEFAULT
これらの書式は、列のデフォルト値を設定または削除します。 デフォルト値はその後のINSERTコマンドにのみ適用され、テーブル内の既存の行を変更させることはありません。 その場合、ビューのON INSERT規則が適用される前に、ビューのINSERT文に挿入されます。
SET/DROP NOT NULL
これらのフォームは、列がNULL値を許可するか拒否するかマークされているかどうかを変更します。 SET NOT NULLは、列にNULL値が含まれない場合にのみ使用できます。
SET STATISTICS
このフォームでは、その後のANALYZE操作に対する列ごとの統計収集対象を設定します。 代わりに-1に設定すると、システムのデフォルトの統計情報ターゲット(default_statistics_target)が使用されるようになります。 PostgreSQLの問い合わせプランナによる統計情報の使用に関するより詳しい情報は、項14.2を参照してください。
SET ( attribute_option = value )
RESET ( attribute_option )
この形式は属性ごとのオプションを設定もしくはリセットするものです。 現在、属性ごとに定義されているオプションはn_distinctとn_distinct_inheritedのみであり、これらは以降のANALYZE操作によって行われるdistinct-value数の推定値を上書きします。n_distinctはテーブル自体の統計に影響し、n_distinct_inheritedはテーブルとその継承子について収集された統計に影響します。 正の値に設定すると、ANALYZEはその列に指定された数の非NULLの値が含まれていると仮定します。 負の値(これは-1以上でなければなりません)を設定すると、ANALYZEは列内の非NULL値の数がテーブルのサイズに線形であると見なします。 例えば、-1という値は、列内のすべての値が明瞭であることを意味し、-0.5という値は、各値が平均で2回現れることを意味する。 これは、テーブルの行数による乗算が問い合わせ計画時まで実行されないため、テーブルのサイズが時間とともに変化する場合に有用である。 0を指定すると、別個の値の数を普通に推定するように戻ります。 PostgreSQLの問い合わせプランナによる統計情報の使用に関するより詳しい情報については、項14.2.を参照してください。 これは、この列をインラインで保持するか、副次的なTOASTテーブルで保持するか、また、データを圧縮するか否かを制御します。 PLAINは整数などの固定長の値に使用しなければならず、インライン、非圧縮である。 MAINは、インラインで圧縮可能なデータ用です。 EXTERNALは外部、非圧縮データ用で、EXTENDEDは外部、圧縮データ用です。 EXTENDEDは、PLAIN以外のストレージをサポートするほとんどのデータ型に対するデフォルトです。 EXTERNALを使用すると、非常に大きなテキストやbytea値に対する部分文字列操作が高速になりますが、ストレージ容量が増加するというペナルティがあります。 SET STORAGEはそれ自体ではテーブルの何かを変更するわけではなく、将来のテーブル更新時に実行される戦略を設定するだけであることに注意してください。
ADD table_constraint
このフォームでは、CREATE TABLEと同じ構文に加えて、現在外部キー制約に対してのみ許可されているNOT VALIDオプションを使用して、テーブルに新しい制約を追加します。 制約がNOT VALIDとマークされた場合、テーブル内の全ての行が制約を満たすかどうかを確認するための長くなりそうな初期検査は省略されます。 この制約は、その後の挿入や更新に対しても適用されます(つまり、参照されるテーブルに一致する行がない限り、失敗します)。
ADD table_constraint_using_index
このフォームでは、既存の一意インデックスに基づくテーブルに新しいPRIMARY KEYまたはUNIQUE制約を追加します。
インデックスは式列を持つことも、部分インデックスであることもできません。 また、デフォルトのソート順を持つB-treeインデックスでなければなりません。 これらの制限は、インデックスが通常のADD PRIMARY KEYまたはADD UNIQUEコマンドによって構築されるものと同等であることを保証します。
PRIMARY KEYが指定され、インデックスの列がまだNOT NULLとされていない場合、このコマンドはそれぞれの列に対してALTER COLUMN SET NOT NULLを実行しようとします。 この場合、列がNULLを含んでいないことを確認するために、完全なテーブルスキャンが必要です。
制約名が提供された場合、インデックスは制約名と一致するように名前が変更されます。
このコマンドが実行された後、インデックスは通常のADD PRIMARY KEYまたはADD UNIQUEコマンドによって構築された場合と同じように、制約によって「所有」されるようになりました。 特に、制約を削除するとインデックスも消えます。
注意:既存のインデックスを使用して制約を追加すると、テーブル更新を長時間ブロックせずに新しい制約を追加する必要がある状況で役に立ちます。 これを行うには、CREATE INDEX CONCURRENTLYを使用してインデックスを作成し、次にこの構文を使用して正式な制約としてインストールします。
VALIDATE CONSTRAINT
This form validates a foreign key constraint that was previously created as NOT VALID, by scanning the table to ensure no unmatched rows.
検証は、大きなテーブルでは長いプロセスになることがあり、現在 ACCESS EXCLUSIVE ロックが必要です。
DROP CONSTRAINT
このフォームは、テーブル上の指定された制約を削除します。 IF EXISTSが指定され、制約が存在しない場合、エラーは発生しません。
DISABLE/ENABLE TRIGGER
これらのフォームは、テーブルに属しているトリガ(複数可)の起動を構成します。 無効化されたトリガは、システムにはまだ知られているが、そのトリガイベントが発生したときには実行されない。 遅延トリガでは、トリガ関数が実際に実行されるときではなく、イベントが発生したときに有効状態がチェックされます。 名前で指定された1つのトリガ、テーブル上の全てのトリガ、または、ユーザトリガのみ(このオプションは、外部キー制約や遅延可能な一意性制約や除外制約を実装するために使用されるような内部生成制約トリガを除く)を無効化または有効化することが可能です。 内部生成された制約トリガーを無効にしたり有効にしたりするにはスーパーユーザー権限が必要です。トリガーが実行されないと当然ながら制約の整合性は保証されないので、注意して行う必要があります。 トリガー発火のメカニズムは、構成変数session_replication_roleにも影響されます。 単に有効なトリガーは、レプリケーションの役割が “origin”(デフォルト)または “local “の時に起動されます。 ENABLE REPLICAとして構成されたトリガーは、セッションが “レプリカ “モードの場合にのみ起動されます。 無効化された規則はシステムにはまだ知られていますが、問い合わせの書き換えの際には適用されません。 セマンティクスは無効/有効のトリガと同様です。 ON SELECTルールは、現在のセッションがデフォルトでないレプリケーションの役割であっても、ビューの動作を維持するために常に適用されます。
CLUSTER
このフォームは、今後のCLUSTER操作のデフォルトインデックスを選択します。
SET WITHOUT CLUSTER
この形式は、最も最近使用されたCLUSTERインデックス仕様をテーブルから削除します。
SET WITH OIDS
この形式はテーブルにOIDシステム列を追加します(項5.4参照)。
ADD COLUMN oid oidと同等ではないことに注意してください。これはシステム列ではなく、たまたまoidと名付けられた通常の列を追加します。 これはDROP COLUMN oid RESTRICTと全く同じですが、既にoidカラムが存在しない場合に文句を言わないという点が異なります。 利用可能なパラメータの詳細については、「ストレージ・パラメータ」を参照してください。 このコマンドによってテーブルの内容がすぐに変更されるわけではないことに注意してください。パラメータによっては、望ましい効果を得るためにテーブルを書き換える必要があるかもしれません。 これは、VACUUM FULL、CLUSTER、またはテーブルの書き換えを強制するALTER TABLEのいずれかの形式を使用して行うことができます。
Note: CREATE TABLEではWITH (storage_parameter) 構文でOIDSを指定できますが、ALTER TABLEはOIDSを格納パラメータとして扱わない。
RESET ( storage_parameter )
この形式は、1つ以上のストレージ・パラメータをデフォルトにリセットするものです。 SETと同様に、テーブルを完全に更新するためにテーブルの書き換えが必要になるかもしれません。
INHERIT parent_table
このフォームは、指定された親テーブルの新しい子として対象テーブルを追加します。 その後、親テーブルに対するクエリはターゲット・テーブルのレコードを含むようになります。 子として追加するためには、ターゲットテーブルはすでに親と同じカラムをすべて含んでいなければならない(追加のカラムを持つこともできる)。 列は一致するデータ型を持ち、親で NOT NULL 制約を持つ場合、子でも NOT NULL 制約を持たなければなりません。
親のすべての CHECK 制約に対応する子テーブル制約も存在する必要があります。 現在、UNIQUE、PRIMARY KEY、およびFOREIGN KEY制約は考慮されませんが、将来的には変更されるかもしれません。
NO INHERIT parent_table
このフォームは、指定した親テーブルの子のリストからターゲットテーブルを削除します。
OF type_name
この形式は、CREATE TABLE OFが形成されたかのように、テーブルを複合型にリンクします。 テーブルの列名と型のリストは、複合型のものと正確に一致しなければなりません。 テーブルは他のどのテーブルからも継承されてはいけません。 これらの制限は、CREATE TABLE OFが同等のテーブル定義を許可することを保証します。
NOT OF
このフォームは、型付きテーブルをその型から切り離します。
OWNER
このフォームは、テーブル、シーケンス、またはビューの所有者を指定したユーザに変更します。
SET TABLESPACE
このフォームはテーブルのテーブル空間を特定のテーブル空間に変更して、テーブルと関連付けられたデータファイルは新しいテーブル空間へ移動させます。 テーブル上のインデックスがある場合は移動されませんが、追加のSET TABLESPACEコマンドで個別に移動させることができます。 CREATE TABLESPACEも参照のこと。
RENAME
RENAMEは、テーブル(またはインデックス、シーケンス、ビュー)またはテーブル内の個々の列の名前を変更する。
SET SCHEMA
このフォームは、テーブルを別のスキーマに移動します。 テーブルの列が所有する関連インデックス、制約、およびシーケンスも同様に移動されます。