> ## 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.

# Ajustes de sesión de insert_*

> Ajustes de sesión de ClickHouse en el grupo generado por 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
  }}>Tipo</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Predeterminado</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modificable sin reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Estos ajustes están disponibles en [system.settings](/docs/es/reference/system-tables/settings) y se generan automáticamente a partir del [código fuente](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 esta configuración está habilitada, permite usar columnas materializadas en INSERT.

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

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

Activa o desactiva la deduplicación de bloques de `INSERT` (para tablas Replicated\*).

Valores posibles:

* 0 — Desactivado.
* 1 — Activado.

De forma predeterminada, los bloques insertados en tablas replicadas mediante la instrucción `INSERT` se deduplican (consulte [Replicación de datos](/docs/es/reference/engines/table-engines/mergetree-family/replication)).
En las tablas replicadas, de forma predeterminada solo se deduplican los 100 bloques más recientes de cada partición (consulte [replicated\_deduplication\_window](/docs/es/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/docs/es/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Para las tablas no replicadas, consulte [non\_replicated\_deduplication\_window](/docs/es/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

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

Esta configuración permite al usuario definir su propia semántica de deduplicación en MergeTree/ReplicatedMergeTree.
Por ejemplo, al proporcionar un valor único para esta configuración en cada instrucción INSERT,
el usuario puede evitar que se deduzcan como duplicados los mismos datos insertados.

Valores posibles:

* Cualquier cadena

`insert_deduplication_token` se usa para la deduplicación *solo* cuando no está vacío.

En las tablas replicadas, de forma predeterminada, solo se deduplican las 100 inserciones más recientes de cada partición (consulte [replicated\_deduplication\_window](/docs/es/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/docs/es/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Para las tablas no replicadas, consulte [non\_replicated\_deduplication\_window](/docs/es/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<Note>
  `insert_deduplication_token` se registra por partición, por lo que varias particiones escritas mediante una sola inserción pueden llevar el mismo token. Sin un token, la suma de comprobación de contenido predeterminada se calcula sobre todo el bloque insertado, por lo que una inserción se deduplica solo cuando todos sus datos coinciden con los de una inserción anterior (un reintento), no cuando las filas de una sola partición coinciden por casualidad con las de una inserción distinta.
</Note>

Ejemplo:

```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" />

Habilita o deshabilita la inserción de [valores predeterminados](/docs/es/reference/statements/create/table#default_values) en lugar de [NULL](/docs/es/reference/syntax#null) en columnas con un tipo de dato no [Nullable](/docs/es/reference/data-types/nullable).
Si el tipo de la columna no es Nullable y esta configuración está deshabilitada, insertar `NULL` provoca una excepción. Si el tipo de la columna es Nullable, los valores `NULL` se insertan sin cambios, independientemente de esta configuración.

Esta configuración se aplica a las consultas [INSERT ... SELECT](/docs/es/reference/statements/insert-into#inserting-the-results-of-select). Ten en cuenta que las subconsultas `SELECT` pueden concatenarse con la cláusula `UNION ALL`.

Valores posibles:

* 0 — Insertar `NULL` en una columna no Nullable provoca una excepción.
* 1 — Se inserta el valor predeterminado de la columna en lugar de `NULL`.

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

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

Si no es `0`, especifica el segmento de la tabla [Distributed](/docs/es/reference/engines/table-engines/special/distributed) en el que se insertarán los datos de forma síncrona.

Si el valor de `insert_shard_id` es incorrecto, el servidor generará una excepción.

Para obtener el número de segmentos en `requested_cluster`, puedes consultar la configuración del servidor o usar esta consulta:

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

Valores posibles:

* 0 — Desactivado.
* Cualquier número entre `1` y `shards_num` de la tabla [Distributed](/docs/es/reference/engines/table-engines/special/distributed) correspondiente.

**Ejemplo**

Consulta:

```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;
```

Resultado:

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