ALTER TABLE
ALTER TABLE は、テーブルの定義を変更します。
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] action [, ... ] ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME [ COLUMN ] column_name TO new_column_name ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME CONSTRAINT constraint_name TO new_constraint_name ALTER TABLE [ IF EXISTS ] name RENAME TO new_name ALTER TABLE [ IF EXISTS ] name SET SCHEMA new_schema where action is one of: ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type ADD table_constraint_using_index ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name
ID 列のアクション
SET GENERATED { ALWAYS | BY DEFAULT }/SET/sequence_optionRESTART-
これらのフォームは、列が ID 列であるかどうかを変更したり、既存の ID 列の生成属性を変更したりします。詳細については、「CREATE TABLE」を参照してください。
SET DEFAULTと同様に、これらの形式は後続のINSERTコマンドとUPDATEコマンドの動作にのみ影響します。テーブル内の既存の行が変更されることはありません。sequence_optionは、INCREMENT BYなどの ALTER SEQUENCE でサポートされるオプションです。これらのフォームは、既存の ID 列の基盤となるシーケンスを変更します。 DROP IDENTITY [ IF EXISTS ]-
このフォームは、列から ID プロパティを削除します。
DROP IDENTITY IF EXISTSが指定されていて、列が ID 列でない場合、エラーはスローされません。この場合、代わりに通知が発行されます。
制約アクションを追加する
ADDtable_constraint_using_index-
このフォームは、既存の一意のインデックスに基づいてテーブルに新しい
UNIQUE制約を追加します。インデックスのすべての列が制約に含まれます。インデックスは
VALID状態である必要があります。インデックスが現在構築中である場合、そのインデックスを使用して一意の制約を追加することはサポートされていません。制約名を指定すると、制約名と一致するようにインデックス名が変更されます。指定しない場合、制約はインデックスと同じ名前になります。
このコマンドを実行すると、インデックスは通常の
CREATE UNIQUE INDEX ASYNCコマンドで構築した場合と同じ方法で、制約によって「所有」されます。特に、制約を削除すると、インデックスも消えます。