RENAME TABLE
RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ...
Esta sentencia renombra una o más tablas. Se añadió en MySQL 3.23.23.
La operación de renombrado se hace atómicamente, lo que significa que ningún otro proceso puede acceder a ninguna de las tablas mientras se realiza el renombrado. Por ejemplo, si se tiene una tabla existente old_table, se puede crear otra tabla new_table que tenga la misma estructura pero que esté vacía, y entonces reemplazar la tabla existente con la vacía tal como sigue:
CREATE TABLE new_table (...); RENAME TABLE old_table TO backup_table, new_table TO old_table;
Si la sentencia renombra más de una tabla, las operaciones se realizan de izquierda a derecha. Si se quiere intercambiar el nombre de dos tablas, se puede hacer de este modo (asumiendo que no existe ninguna tabla con el nombre tmp_table):
RENAME TABLE old_table TO tmp_table, new_table TO old_table, tmp_table TO new_table;
Mientras dos bases de datos estén en el mismo sistema de ficheros, tambien es posible renombrar una tabla para moverla desde una base de datos a otra:
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
Cuando se ejecuta RENAME, no se puede tener ninguna tabla bloqueada o transacciones activas. Además, se deben tener los privilegios ALTER y DROP en la tabla original, y los privilegios CREATE e INSERT en la nueva.
Si MySQL encuentra cualquier error en un renombrado múltiple, hará un renombrado inverso para todas las tablas renombradas para dejar las tablas con los nombres originales.