mysql.h


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.