RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,...]
名前の変更は原子的に実行されます。つまり、テーブル名が変更されている間、他のスレッドからはこれらのテーブルのいずれにもアクセスできなくなります。それによって、テーブルを空のテーブルと置換することが可能になります。
:
CREATE TABLE new_table (...); RENAME TABLE old_table TO backup_table, new_table TO old_table;
名前の変更は左から右へ実行されるため、2 つのテーブルの名前を交換する場合は、次のように記述する必要があります。
RENAME TABLE old_table TO backup_table, new_table TO old_table, backup_table TO new_table;
データベース名を変更することもできますが、その場合は、変更後のデータベースが変更前のデータベースと同じディスク上に存在していなければなりません。
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
ロックされたテーブルやアクティブなトランザクションがあると、RENAME
は実行できません。また、元のテーブルに対する
ALTER
権限と DROP
権限、新しいテーブルに対する
CREATE
権限と INSERT
権限が必要です。
MySQL で複数テーブルの名前の変更時にエラーが発生した場合、名前を変更されたすべてのテーブルに対して逆方向の名前の変更処理が行われ、すべてが元の状態に戻されます。
RENAME TABLE
は MySQL 3.23.23
で追加されました。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.