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 [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] ALTER [ COLUMN ] column_name SET DEFAULT expression ALTER [ COLUMN ] column_name DROP DEFAULT ALTER [ COLUMN ] column_name DROP NOT NULL ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ADD table_constraint_using_index DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name
説明
ADD [ COLUMN ] [ IF NOT EXISTS ]-
このフォームは、CREATE TABLE と同じ構文を使用して、テーブルに新しい列を追加します。
IF NOT EXISTSが指定されていて、この名前の列が既に存在する場合、エラーはスローされません。 SET/DROP DEFAULT-
これらのフォームは、列のデフォルト値を設定または削除します (削除はデフォルト値を NULL に設定するのと同等です)。新しいデフォルト値は、後続の
INSERTまたはUPDATEコマンドにのみ適用され、テーブルに既にある行は変更されません。 DROP NOT NULL-
このフォームでは、null 値を許可するように列を変更します。
DROP EXPRESSION [ IF EXISTS ]-
このフォームは、保存された生成列を通常のベース列に変換します。列内の既存のデータは保持されますが、今後の変更には生成式が適用されなくなります。
DROP EXPRESSION IF EXISTSが指定されていて、列が生成された列でない場合、エラーはスローされません。この場合、代わりに通知が発行されます。 ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITYSET GENERATED { ALWAYS | BY DEFAULT }DROP IDENTITY [ IF EXISTS ]-
これらのフォームは、列が ID 列であるかどうかを変更したり、既存の ID 列の生成属性を変更したりします。詳細については、「CREATE TABLE」を参照してください。
SET DEFAULTと同様に、これらの形式は後続のINSERTコマンドとUPDATEコマンドの動作にのみ影響します。テーブル内の既存の行が変更されることはありません。sequence_optionは、INCREMENT BYなどの ALTER SEQUENCE でサポートされるオプションです。これらのフォームは、既存の ID 列の基盤となるシーケンスを変更します。注記
Amazon Aurora DSQL では、
ADD GENERATED AS IDENTITYを使用するときに明示的なCACHE値が必要です。さらに、ID 列はbigint列でのみサポートされています。ID 列を使用する場合は、キャッシュ値を慎重に検討する必要があります。詳細については、「CREATE SEQUENCE」ページの重要なコールアウトを参照してください。
ワークロードパターンに基づいて ID 列を使用する最適な方法のガイダンスについては、「シーケンスと ID 列の使用」を参照してください。
SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }-
このフォームは、列のストレージモードを設定します。使用可能なストレージモードの詳細については、CREATE TABLE ページの「ストレージモード」を参照してください。
ADDtable_constraint_using_index-
このフォームは、既存の一意のインデックスに基づいてテーブルに新しい
UNIQUE制約を追加します。インデックスのすべての列が制約に含まれます。インデックスは
VALID状態である必要があります。インデックスが現在構築中である場合、そのインデックスを使用して一意の制約を追加することはサポートされていません。制約名を指定すると、制約名と一致するようにインデックス名が変更されます。指定しない場合、制約はインデックスと同じ名前になります。
このコマンドを実行すると、インデックスは通常の
CREATE UNIQUE INDEX ASYNCコマンドで構築した場合と同じ方法で、制約によって「所有」されます。特に、制約を削除すると、インデックスも消えます。 DROP CONSTRAINT [ IF EXISTS ]-
このフォームは、制約の基盤となるインデックスとともに、テーブルの指定された制約を削除します。
IF EXISTSが指定されていて、制約が存在しない場合、エラーはスローされません。この場合、代わりに通知が発行されます。重要
現在、
CREATE TABLE式で新しい制約の追加がサポートされています。ALTER TABLE ADD CONSTRAINT(DROP CONSTRAINTのサポートに対応するもの) は、まだ利用できません。この機能についてご質問がある場合は、AWS サポートにお問い合わせいただくか、DSQL Public Discordから直接お問い合わせください。 OWNER TO-
このフォームは、テーブルの所有者を指定されたユーザーに変更します。
RENAME-
RENAMEフォームは、テーブルの名前、テーブル内の個々の列の名前、またはテーブルの制約の名前を変更します。基盤となるインデックスを持つ制約の名前を変更すると、そのインデックスの名前も変更されます。保存されたデータには影響しません。 SET SCHEMA-
このフォームは、テーブルを別のスキーマに移動します。テーブル列が所有する関連付けられたインデックス、制約、シーケンスも移動されます。
パラメータ
IF EXISTS-
テーブルが存在しなかったとしてもエラーになりません。この場合、通知が発行されます。
name-
変更対象となる既存のテーブルの名前 (オプションでスキーマ修飾可) です。テーブル名の前に
ONLYが指定されている場合、そのテーブルのみが変更されます。ONLYが指定されていない場合、テーブルとそのすべての子テーブル (存在する場合) が変更されます。オプションで、子テーブルが含まれていることを明示的に示すために、テーブル名の後に*を指定できます。 column_name-
新規または既存の列の名前です。
new_column_name-
既存の列の新しい名前です。
new_name-
テーブルの新しい名前。
data_type-
新しい列のデータ型。
constraint_name-
新規または既存の制約の名前です。
CASCADE-
削除された制約に依存するオブジェクト (その列を参照するビューなど) を自動的に削除し、それらのオブジェクトに依存するすべてのオブジェクトも自動的に削除します。
RESTRICT-
依存オブジェクトがある場合は、制約の削除を拒否します。これがデフォルトの動作です。
new_owner-
テーブルの新しい所有者のユーザー名です。
new_schema-
テーブルの移動先となるスキーマの名前です。