Menu fechado

Como renomear tabelas no MySQL

Para renomear uma tabela no MySQL você só precisa rodar um comando chamado RENAME TABLE, a sintaxe é bastante simples:

RENAME TABLE tb1 TO tb2;

O comando RENAME TABLE vai renomear a tabela atomicamente, o que significa que a tabela ficara travada durante o comando.
Você também pode renomear varias tabelas em um único comando:

RENAME TABLE tb1 TO tb2, tb3 TO tb4;

Para renomear uma tabela, você vai precisar dos privilégios ALTER e DROP na tabela antiga e CREATE e INSERT na tabela nova.

Você só precisa ter cuidado caso você utilize TRIGGERS, no exemplo abaixo, depois de inserir um registro na tabela Cities eu conto +1 no NOfCities na tabela Countries, o que acontece se eu renomear a tabela Contries?

mysql> SHOW TRIGGERS\G
*************************** 1. row ***************************
             Trigger: PlusOneCities
               Event: INSERT
               Table: Cities
           Statement: UPDATE Countries SET NOfCities = NOfCities + 1 WHERE Code = NEW.CountryCode
              Timing: AFTER
             Created: NULL
            sql_mode: 
             Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: latin1_swedish_ci
1 row in set (0.00 sec)

mysql> INSERT INTO Cities SET Name = 'City1', CountryCode = 'BRA', District = 'Brasilia', Population = 10000;
Query OK, 1 row affected (0.04 sec)

mysql> RENAME TABLE Countries TO Country;
Query OK, 0 rows affected (0.03 sec)

mysql> INSERT INTO Cities SET Name = 'City2', CountryCode = 'BRA', District = 'Brasilia', Population = 10000;
ERROR 1146 (42S02): Table 'world.Countries' doesn't exist

Viu, vamos precisar alterar manualmente as TRIGGERS.

você pode encontrar mais informações na Documentação do MySQL

Gostou ? Ajude e Compartilhe!