View a markdown version of this page

ALTER TABLE - Amazon Aurora DSQL

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 IDENTITY
SET 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 ページの「ストレージモード」を参照してください。

ADD table_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

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