説明
このステートメントは、テーブルやマテリアライズドビューの名前を変更するために使用します。
使用制限と注意事項
テーブルの名前変更中、システムはそのプロセスを自動的にロックし、名前変更が完了するまで他のスレッドによる当該テーブルへの読み取り操作を阻止します。
ターゲットテーブルに継続的にアクティブなトランザクションが存在する場合、名前変更操作は待機状態になります。すべてのアクティブトランザクションがコミットまたはロールバックされるまで、テーブルの名前変更処理は進行できません。
このステートメントを使用して複数のテーブルを名前変更する場合、名前変更操作は左から右の順に行われます。
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;