説明
このステートメントは、1つまたは複数のテーブルをリネームするために使用されます。
説明
OceanBaseデータベースV4.3.5では、RENAME TABLE ステートメントはV4.3.5 BP3バージョンからマテリアライズドビューのリネームをサポートしています。
制限事項と注意点
テーブルのリネーム処理中、システムは自動的にこの処理をロックし、リネームが完了するまで他のスレッドによるこれらのテーブルへの読み取り操作をブロックします。
ターゲットテーブルに継続的なアクティブトランザクションが存在する場合、リネーム操作は待機します。すべてのアクティブトランザクションがコミットまたはロールバックされるまで、テーブルのリネーム処理は進行できません。
このステートメントが複数のテーブルのリネームに使用される場合、リネーム操作は左から右へと順番に実行されます。
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;