説明
このステートメントは、テーブルやマテリアライズドビューの名前を変更するために使用します。
使用制限と注意事項
テーブルの名前変更中、システムはそのプロセスを自動的にロックし、名前変更が完了するまで他のスレッドによる当該テーブルへの読み取り操作を阻止します。
対象テーブルに継続的にアクティブなトランザクションが存在する場合、名前変更操作は待機状態になります。すべてのアクティブなトランザクションがコミットまたはロールバックされるまで、テーブルの名前変更処理は進行できません。
このステートメントを使用して複数のテーブルを名前変更する場合、名前変更操作は左から右の順に実行されます。
RENAME TABLEを実行する際、ロックされたテーブルやアクティブな状態のトランザクションは存在できません。説明
テナントレベル構成パラメータ enable_lock_priority を有効にした後、
RENAME TABLEは最も高いロック優先順位を持ちます。RENAME TABLEはビューに対して使用できますが、他のデータベースへの移動はサポートされていません。RENAME TABLE操作中は、テーブルロックや読み書き防御策が追加されるため、操作時間が長くなります。他のユーザーのDDL操作に影響を与えないよう、一括でRENAME TABLE操作を実行することは推奨されません。
権限要件
この操作には、元のテーブルに対する ALTER および DROP 権限と、新しいテーブルに対する CREATE および INSERT 権限が必要です。
構文
RENAME TABLE table_name TO [new_database_name.]new_table_name
[, table_name2 TO [new_database_name.]new_table_name2 ...];
パラメータの説明
パラメータ |
説明 |
|---|---|
| table_name | 元のテーブル名。 |
| new_table_name | 新しいテーブル名。 |
| table_name TO [new_database_name.]new_table_name | 複数のテーブルを名前変更する場合、カンマ(,)で区切ります。new_database_name を指定することで、テーブルを他のデータベースに移動できます。 |
例
テーブル
t1とt2を作成します。obclient> CREATE TABLE t1(c1 INT); obclient> CREATE TABLE t2(c1 INT);テーブル
t1の名前をt11に変更します。obclient> RENAME TABLE t1 TO t11;テーブル
t11の名前をt111に、テーブルt2の名前をt22に変更します。obclient> RENAME TABLE t11 TO t111, t2 TO t22;テーブル
t22をmysqlデータベースに移動します。obclient> RENAME TABLE t22 TO mysql.t22;