> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# paramètres de session insert_*

> Paramètres de session ClickHouse du groupe généré insert_*.

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Type</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Par défaut</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modifiable sans redémarrage
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Ces paramètres sont disponibles dans [system.settings](/docs/fr/reference/system-tables/settings) et sont générés automatiquement à partir du [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

<div id="insert_allow_materialized_columns">
  ## insert\_allow\_materialized\_columns
</div>

<SettingsInfoBlock type="Bool" default_value="0" />

Si ce paramètre est activé, les colonnes matérialisées sont autorisées dans INSERT.

<div id="insert_deduplicate">
  ## insert\_deduplicate
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Active ou désactive la déduplication des blocs pour `INSERT` (pour les tables Replicated\*).

Valeurs possibles :

* 0 — Désactivé.
* 1 — Activé.

Par défaut, les blocs insérés dans les tables répliquées par l’instruction `INSERT` sont dédupliqués (voir [Réplication des données](/docs/fr/reference/engines/table-engines/mergetree-family/replication)).
Pour les tables répliquées, seuls les 100 blocs les plus récents de chaque partition sont dédupliqués par défaut (voir [replicated\_deduplication\_window](/docs/fr/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/docs/fr/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Pour les tables non répliquées, voir [non\_replicated\_deduplication\_window](/docs/fr/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<div id="insert_deduplication_token">
  ## insert\_deduplication\_token
</div>

Ce paramètre permet à l’utilisateur de définir sa propre logique de déduplication dans MergeTree/ReplicatedMergeTree.
Par exemple, en fournissant une valeur unique pour ce paramètre dans chaque instruction INSERT,
l’utilisateur peut éviter que les mêmes données insérées soient dédupliquées.

Valeurs possibles :

* Toute chaîne

`insert_deduplication_token` est utilisé pour la déduplication *uniquement* lorsqu’il n’est pas vide.

Pour les tables répliquées, par défaut, seules les 100 insertions les plus récentes de chaque partition sont dédupliquées (voir [replicated\_deduplication\_window](/docs/fr/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/docs/fr/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Pour les tables non répliquées, voir [non\_replicated\_deduplication\_window](/docs/fr/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<Note>
  `insert_deduplication_token` est géré par partition. Ainsi, plusieurs partitions écrites par une même insertion peuvent porter le même jeton. Sans jeton, la somme de contrôle du contenu par défaut est calculée sur l’ensemble du bloc inséré ; une insertion n’est donc dédupliquée que si l’intégralité de ses données correspond à une insertion précédente (une nouvelle tentative), et non si seules les lignes d’une partition donnée coïncident avec celles d’une autre insertion.
</Note>

Exemple :

```sql theme={null}
CREATE TABLE test_table
( A Int64 )
ENGINE = MergeTree
ORDER BY A
SETTINGS non_replicated_deduplication_window = 100;

INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (1);

-- the next insert won't be deduplicated because insert_deduplication_token is different
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test1' VALUES (1);

-- the next insert will be deduplicated because insert_deduplication_token
-- is the same as one of the previous
INSERT INTO test_table SETTINGS insert_deduplication_token = 'test' VALUES (2);

SELECT * FROM test_table

┌─A─┐
│ 1 │
└───┘
┌─A─┐
│ 1 │
└───┘
```

<div id="insert_null_as_default">
  ## insert\_null\_as\_default
</div>

<SettingsInfoBlock type="Bool" default_value="1" />

Active ou désactive l’insertion de [valeurs par défaut](/docs/fr/reference/statements/create/table#default_values) à la place de [NULL](/docs/fr/reference/syntax#null) dans les colonnes de type non [Nullable](/docs/fr/reference/data-types/nullable).
Si le type de la colonne n’est pas Nullable et que ce paramètre est désactivé, l’insertion de `NULL` provoque une exception. Si le type de la colonne est Nullable, les valeurs `NULL` sont insérées telles quelles, indépendamment de ce paramètre.

Ce paramètre s’applique aux requêtes [INSERT ... SELECT](/docs/fr/reference/statements/insert-into#inserting-the-results-of-select). Notez que les sous-requêtes `SELECT` peuvent être concaténées avec la clause `UNION ALL`.

Valeurs possibles :

* 0 — L’insertion de `NULL` dans une colonne non Nullable provoque une exception.
* 1 — La valeur par défaut de la colonne est insérée à la place de `NULL`.

<div id="insert_shard_id">
  ## insert\_shard\_id
</div>

<SettingsInfoBlock type="UInt64" default_value="0" />

S’il est différent de `0`, indique le shard de la table [Distributed](/docs/fr/reference/engines/table-engines/special/distributed) dans lequel les données seront insérées de manière synchrone.

Si la valeur de `insert_shard_id` est incorrecte, le serveur lèvera une exception.

Pour obtenir le nombre de shards dans `requested_cluster`, vous pouvez vérifier la config du serveur ou utiliser cette requête :

```sql theme={null}
SELECT uniq(shard_num) FROM system.clusters WHERE cluster = 'requested_cluster';
```

Valeurs possibles :

* 0 — Désactivé.
* N’importe quel nombre de `1` à `shards_num` de la table [Distributed](/docs/fr/reference/engines/table-engines/special/distributed) correspondante.

**Exemple**

Requête :

```sql theme={null}
CREATE TABLE x AS system.numbers ENGINE = MergeTree ORDER BY number;
CREATE TABLE x_dist AS x ENGINE = Distributed('test_cluster_two_shards_localhost', currentDatabase(), x);
INSERT INTO x_dist SELECT * FROM numbers(5) SETTINGS insert_shard_id = 1;
SELECT * FROM x_dist ORDER BY number ASC;
```

Résultat :

```text theme={null}
┌─number─┐
│      0 │
│      0 │
│      1 │
│      1 │
│      2 │
│      2 │
│      3 │
│      3 │
│      4 │
│      4 │
└────────┘
```
