> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation de l’instruction EXCHANGE

# Instruction EXCHANGE

Échange de manière atomique les noms de deux tables ou dictionnaires.
Cette opération peut également être réalisée avec une requête [`RENAME`](/fr/reference/statements/rename) utilisant un nom temporaire, mais dans ce cas, l’opération n’est pas atomique.

<Note>
  La requête `EXCHANGE` est prise en charge uniquement par les moteurs de base de données [`Atomic`](/fr/reference/engines/database-engines/atomic) et [`Shared`](/fr/products/cloud/features/infrastructure/shared-catalog#shared-database-engine).
</Note>

**Syntaxe**

```sql theme={null}
EXCHANGE TABLES|DICTIONARIES [db0.]name_A AND [db1.]name_B [ON CLUSTER cluster]
```

<div id="exchange-tables">
  ## EXCHANGE TABLES
</div>

Échange les noms de deux tables.

**Syntaxe**

```sql theme={null}
EXCHANGE TABLES [db0.]table_A AND [db1.]table_B [ON CLUSTER cluster]
```

<div id="exchange-multiple-tables">
  ### EXCHANGE DE PLUSIEURS TABLES
</div>

Vous pouvez échanger plusieurs paires de tables dans une seule requête en les séparant par des virgules.

<Note>
  Lors de l’échange de plusieurs paires de tables, les échanges sont effectués **séquentiellement, et non de façon atomique**. Si une erreur survient pendant l’opération, il se peut que certaines paires de tables aient été échangées, tandis que d’autres ne l’aient pas été.
</Note>

**Exemple**

```sql title="Query" theme={null}
-- Create tables
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;

-- Exchange two pairs of tables in one query
EXCHANGE TABLES a AND b, c AND d;

SHOW TABLE a;
SHOW TABLE b;
SHOW TABLE c;
SHOW TABLE d;
```

```sql title="Response" theme={null}
-- Now table 'a' has the structure of 'b', and table 'b' has the structure of 'a'
┌─statement──────────────┐
│ CREATE TABLE default.a↴│
│↳(                     ↴│
│↳    `b` UInt8         ↴│
│↳)                     ↴│
│↳ENGINE = Memory        │
└────────────────────────┘
┌─statement──────────────┐
│ CREATE TABLE default.b↴│
│↳(                     ↴│
│↳    `a` UInt8         ↴│
│↳)                     ↴│
│↳ENGINE = Memory        │
└────────────────────────┘

-- Now table 'c' has the structure of 'd', and table 'd' has the structure of 'c'
┌─statement──────────────┐
│ CREATE TABLE default.c↴│
│↳(                     ↴│
│↳    `d` UInt8         ↴│
│↳)                     ↴│
│↳ENGINE = Memory        │
└────────────────────────┘
┌─statement──────────────┐
│ CREATE TABLE default.d↴│
│↳(                     ↴│
│↳    `c` UInt8         ↴│
│↳)                     ↴│
│↳ENGINE = Memory        │
└────────────────────────┘
```

<div id="exchange-dictionaries">
  ## EXCHANGE DICTIONARIES
</div>

Échange les noms de deux dictionnaires.

**Syntaxe**

```sql theme={null}
EXCHANGE DICTIONARIES [db0.]dict_A AND [db1.]dict_B [ON CLUSTER cluster]
```

**Voir aussi**

* [Dictionnaires](/fr/reference/statements/create/dictionary)
