Skip to main content
这些设置可在 system.settings 中查看,并根据 源代码 自动生成。

insert_allow_materialized_columns

如果启用此设置,则允许在 INSERT 中插入 materialized 列。

insert_deduplicate

启用或禁用 INSERT 的块去重 (适用于复制表) 。 可能的值:
  • 0 — 禁用。
  • 1 — 启用。
默认情况下,通过 INSERT 语句插入到复制表中的块会进行去重 (请参见 Data Replication) 。 对于复制表,默认情况下每个分区仅对最近的 100 个块进行去重 (请参见 replicated_deduplication_windowreplicated_deduplication_window_seconds) 。 对于非复制表,请参见 non_replicated_deduplication_window

insert_deduplication_token

该设置允许用户在 MergeTree/ReplicatedMergeTree 中自定义去重语义。 例如,在每条 INSERT 语句中为该设置提供一个唯一值, 即可避免相同的插入数据被去重。 可能的值:
  • 任意字符串
只有当 insert_deduplication_token 非空时,才会将其用于去重。 对于复制表,默认每个分区仅会对最近 100 次插入进行去重 (参见 replicated_deduplication_windowreplicated_deduplication_window_seconds) 。 对于非复制表,请参见 non_replicated_deduplication_window
insert_deduplication_token 是按分区跟踪的,因此一次 insert 写入的多个分区可以携带相同的 token。若未提供 token,系统默认会基于整个插入块计算内容校验和,因此只有当某次 insert 的全部数据都与之前某次 insert (即重试) 完全一致时,才会被去重;如果只是某个分区中的行恰好与另一条不同的 insert 一致,则不会被去重。
示例:

insert_null_as_default

启用或禁用:向非 Nullable 数据类型的列中插入数据时,使用 默认值 替代 NULL。 如果列类型不是 Nullable 且此设置被禁用,则插入 NULL 会导致异常。如果列类型是 Nullable,则无论此设置如何,NULL 值都会按原样插入。 此设置适用于 INSERT … SELECT 查询。请注意,SELECT 子查询可以使用 UNION ALL 子句进行拼接。 可能的值:
  • 0 — 向非 Nullable 列插入 NULL 会导致异常。
  • 1 — 插入列的默认值而不是 NULL

insert_shard_id

如果不为 0,则指定将数据同步插入到 Distributed 表中的哪个分片。 如果 insert_shard_id 的值不正确,服务器将抛出异常。 要获取 requested_cluster 中的分片数量,可以检查服务器配置,或使用以下查询:
可能的值:
  • 0 — 已禁用。
  • 对应的 Distributed 表中,从 1shards_num 之间的任意数字。
示例 查询:
结果:
最后修改于 2026年7月23日