Saltar al contenido principal

Pregunta

¿Cómo uso el comando EXCHANGE para intercambiar los nombres de las tablas?

Respuesta

El comando EXCHANGE es útil cuando necesitas intercambiar una tabla actual por otra tabla temporal en la que posiblemente se hayan actualizado las claves primarias u otras configuraciones. Esto se realiza de forma atómica, a diferencia del comando RENAME. También es útil cuando tienes vistas materializadas que se activan sobre una tabla de origen y quieres evitar reconstruir la vista. A continuación se muestra un ejemplo sencillo de cómo funciona y cómo probarlo:
  • Crear una base de datos de ejemplo
create database db1;
  • Crear una tabla de ejemplo
create table db1.table1_exchange
(
 id Int32,
 string_field String
)
engine = MergeTree()
order by id;
  • Insertar una fila de ejemplo
insert into db1.table1_exchange
values
(1, 'a');
  • Cree una tabla temporal de ejemplo que luego se intercambiará
create table db1.table1_exchange_temp
(
 id Int32,
 string_field String
)
engine = MergeTree()
order by id;
  • Insertar una fila de ejemplo en la tabla temporal
insert into db1.table1_exchange_temp
values
(2, 'b');
  • Ejecuta el comando EXCHANGE para intercambiar las tablas
exchange tables db1.table1_exchange and db1.table1_exchange_temp;
  • Compruebe que ahora las tablas se han intercambiado y que las filas han cambiado de lugar
select * from db1.table1_exchange;
┌─id─┬─string_field─┐
│  2 │ b            │
└────┴──────────────┘

1 row in set. Elapsed: 0.002 sec. 
Última modificación el 10 de junio de 2026