ALTER TABLE
説明
既存のテーブルを変更します。以下を含みます:
- テーブル、パーティション、インデックス、または列の名前変更
- テーブルコメントの変更
- パーティションの変更(パーティションの追加/削除とパーティション属性の変更)
- バケット法とバケット数の変更
- 列の変更(列の追加/削除と列の順序変更)
- ロールアップインデックスの作成/削除
- ビットマップインデックスの変更
- テーブルプロパティの変更
- アトミックスワップ
- 手動データバージョンコンパクション
- 主キー永続インデックスの削除
ヒント
この操作 には、対象テーブルに対するALTER権限が必要です。
構文
ALTER TABLE [<db_name>.]<tbl_name>
alter_clause1[, alter_clause2, ...]
alter_clause
には次の操作を含めることができます:名前変更、コメント、パーティション、バケット、列、ロールアップインデックス、ビットマップインデックス、テーブルプロパティ、スワップ、コンパクション。
- 名前変更: テーブル、ロールアップインデックス、パーティション、または列の名前を変更します(v3.3.2以降でサポート)。
- コメント: テーブルコメントを変更します(v3.1以降でサポート)。
- パーティション: パーティションプロパティを変更し、パーティションを削除または追加します。
- バケット: バケット法とバケット数を変更します。
- 列: 列を追加、削除、または並べ替え、または列タイプを変更します。
- ロールアップインデックス: ロールアップインデックスを作成または削除します。
- ビットマップインデックス: インデックスを変更します(ビットマップインデックスのみ変更可能)。
- スワップ: 2つのテーブルをアトミックに交換します。
- コンパクション: ロードされたデータのバージョンをマージするために手動でコンパクションを 実行します(v3.1以降でサポート)。
- 永続インデックスの削除: 共有データクラスタの主キーテーブルの永続インデックスを削除します (v3.3.9以降でサポートされています)。
制限と使用上の注意
- パーティション、列、ロールアップインデックスに対する操作は、1つのALTER TABLE文で実行できません。
- 列コメントは変更できません。
- 1つのテーブルには、同時に1つのスキーマ変更操作しか行えません。同時に2つのスキーマ変更コマンドを実行することはできません。
- バケット、列、ロールアップインデックスに対する操作は非同期操作です。タスクが送信されるとすぐに成功メッセージが返されます。進行状況を確認するには SHOW ALTER TABLE コマンドを実行し、操作をキャンセルするには CANCEL ALTER TABLE コマンドを実行できます。
- 名前変更、コメント、パーティション、ビットマップインデックス、スワップに対する操作は同期操作であり、コマンドの返り値は実行が完了したことを示します。
名前変更
名前変更は、テーブル名、ロール アップインデックス、およびパーティション名の変更をサポートします。
テーブルの名前を変更する
ALTER TABLE <tbl_name> RENAME <new_tbl_name>
ロールアップインデックスの名前を変更する
ALTER TABLE [<db_name>.]<tbl_name>
RENAME ROLLUP <old_rollup_name> <new_rollup_name>
パーティションの名前を変更する
ALTER TABLE [<db_name>.]<tbl_name>
RENAME PARTITION <old_partition_name> <new_partition_name>
列の名前を変更する
v3.3.2以降、StarRocksは列の名前変更をサポートしています。
ALTER TABLE [<db_name>.]<tbl_name>
RENAME COLUMN <old_col_name> [ TO ] <new_col_name>
注記
- 列をAからBに名前変更した後、新しい列名Aを持つ列を追加することはサポートされていません。
- 名前変更された列に基づいて構築されたマテリアライズドビューは効果を発揮しません。新しい名前の列に基づいて再構築する必要があります。