Intercambia de forma atómica los nombres de dos tablas o diccionarios.
Esta tarea también puede realizarse con una consulta RENAME usando un nombre temporal, pero en ese caso la operación no es atómica.
La consulta EXCHANGE solo es compatible con los motores de base de datos Atomic y Shared.
Sintaxis
EXCHANGE TABLES|DICTIONARIES [db0.]name_A AND [db1.]name_B [ON CLUSTER cluster]
Intercambia los nombres de dos tablas.
Sintaxis
EXCHANGE TABLES [db0.]table_A AND [db1.]table_B [ON CLUSTER cluster]
EXCHANGE DE VARIAS TABLAS
Puede intercambiar varios pares de tablas en una sola consulta separándolos con comas.
Al intercambiar varios pares de tablas, los intercambios se realizan de forma secuencial, no atómica. Si se produce un error durante la operación, es posible que algunos pares de tablas se hayan intercambiado y otros no.
Ejemplo
-- Crear tablas
CREATE TABLE a (a UInt8) ENGINE=Memory;
CREATE TABLE b (b UInt8) ENGINE=Memory;
CREATE TABLE c (c UInt8) ENGINE=Memory;
CREATE TABLE d (d UInt8) ENGINE=Memory;
-- Intercambiar dos pares de tablas en una sola consulta
EXCHANGE TABLES a AND b, c AND d;
SHOW TABLE a;
SHOW TABLE b;
SHOW TABLE c;
SHOW TABLE d;
-- Ahora la tabla 'a' tiene la estructura de 'b', y la tabla 'b' tiene la estructura de 'a'
┌─statement──────────────┐
│ CREATE TABLE default.a↴│
│↳( ↴│
│↳ `b` UInt8 ↴│
│↳) ↴│
│↳ENGINE = Memory │
└────────────────────────┘
┌─statement──────────────┐
│ CREATE TABLE default.b↴│
│↳( ↴│
│↳ `a` UInt8 ↴│
│↳) ↴│
│↳ENGINE = Memory │
└────────────────────────┘
-- Ahora la tabla 'c' tiene la estructura de 'd', y la tabla 'd' tiene la estructura de 'c'
┌─statement──────────────┐
│ CREATE TABLE default.c↴│
│↳( ↴│
│↳ `d` UInt8 ↴│
│↳) ↴│
│↳ENGINE = Memory │
└────────────────────────┘
┌─statement──────────────┐
│ CREATE TABLE default.d↴│
│↳( ↴│
│↳ `c` UInt8 ↴│
│↳) ↴│
│↳ENGINE = Memory │
└────────────────────────┘
Intercambia los nombres de dos diccionarios.
Sintaxis
EXCHANGE DICTIONARIES [db0.]dict_A AND [db1.]dict_B [ON CLUSTER cluster]
Véase también