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

# configurações de sessão insert_*

> Configurações de sessão do ClickHouse no grupo gerado 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"
  }}>Padrão</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Pode ser alterado sem reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Estas configurações estão disponíveis em [system.settings](/docs/pt-BR/reference/system-tables/settings) e são geradas automaticamente a partir do [código-fonte](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" />

Se a configuração estiver habilitada, permite o uso de colunas materializadas em INSERT.

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

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

Ativa ou desativa a desduplicação de blocos de `INSERT` (para tabelas Replicated\*).

Valores possíveis:

* 0 — Desativado.
* 1 — Ativado.

Por padrão, os blocos inseridos em tabelas replicadas pela instrução `INSERT` são desduplicados (consulte [Replicação de dados](/docs/pt-BR/reference/engines/table-engines/mergetree-family/replication)).
Por padrão, em tabelas replicadas, apenas os 100 blocos mais recentes de cada partição são desduplicados (consulte [replicated\_deduplication\_window](/docs/pt-BR/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/docs/pt-BR/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Para tabelas não replicadas, consulte [non\_replicated\_deduplication\_window](/docs/pt-BR/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

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

Essa configuração permite que o usuário defina sua própria lógica de desduplicação no MergeTree/ReplicatedMergeTree.
Por exemplo, ao fornecer um valor único para a configuração em cada instrução INSERT,
o usuário pode evitar que os mesmos dados inseridos sejam desduplicados.

Valores possíveis:

* Qualquer string

`insert_deduplication_token` é usado para desduplicação *apenas* quando não está vazio.

Para tabelas replicadas, por padrão, apenas as 100 inserções mais recentes de cada partição são desduplicadas (consulte [replicated\_deduplication\_window](/docs/pt-BR/reference/settings/merge-tree-settings#replicated_deduplication_window), [replicated\_deduplication\_window\_seconds](/docs/pt-BR/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
Para tabelas não replicadas, consulte [non\_replicated\_deduplication\_window](/docs/pt-BR/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<Note>
  `insert_deduplication_token` é controlado por partição, portanto várias partições gravadas por um insert podem usar o mesmo token. Sem um token, o checksum padrão do conteúdo é calculado sobre todo o bloco inserido, portanto um insert só é desduplicado quando todos os seus dados correspondem aos de um insert anterior (uma nova tentativa), e não quando as linhas de uma única partição, por acaso, coincidem com as de um insert diferente.
</Note>

Exemplo:

```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 ou desabilita a inserção de [valores padrão](/docs/pt-BR/reference/statements/create/table#default_values) em vez de [NULL](/docs/pt-BR/reference/syntax#null) em colunas com tipo de dado não [Nullable](/docs/pt-BR/reference/data-types/nullable).
Se o tipo da coluna não for Nullable e essa configuração estiver desabilitada, a inserção de `NULL` causará uma exceção. Se o tipo da coluna for Nullable, os valores `NULL` serão inseridos como estão, independentemente dessa configuração.

Essa configuração se aplica a consultas [INSERT ... SELECT](/docs/pt-BR/reference/statements/insert-into#inserting-the-results-of-select). Observe que subconsultas `SELECT` podem ser concatenadas com a cláusula `UNION ALL`.

Valores possíveis:

* 0 — Inserir `NULL` em uma coluna não Nullable causa uma exceção.
* 1 — O valor padrão da coluna é inserido em vez de `NULL`.

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

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

Se não for `0`, especifica o shard da tabela [Distributed](/docs/pt-BR/reference/engines/table-engines/special/distributed) no qual os dados serão inseridos sincronamente.

Se o valor de `insert_shard_id` estiver incorreto, o servidor lançará uma exceção.

Para obter o número de shards em `requested_cluster`, você pode verificar a configuração do servidor ou usar esta consulta:

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

Valores possíveis:

* 0 — Desabilitado.
* Qualquer número de `1` até `shards_num` da tabela [Distributed](/docs/pt-BR/reference/engines/table-engines/special/distributed) correspondente.

**Exemplo**

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 │
└────────┘
```
