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

# إعدادات جلسة insert_*

> إعدادات جلسة ClickHouse ضمن المجموعة المُولَّدة 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
  }}>النوع</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>القيمة الافتراضية</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          يمكن تغييره دون إعادة التشغيل
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

هذه الإعدادات متاحة في [system.settings](/docs/ar/reference/system-tables/settings)، وهي مُولَّدة تلقائيًا من [الشفرة المصدرية](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" />

إذا كان هذا الإعداد مفعّلًا، فسيُسمح باستخدام الأعمدة المُجسَّدة في عمليات INSERT.

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

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

يُفعّل أو يعطّل إزالة التكرار للكتل لأمر `INSERT` (في جداول Replicated\*).

القيم الممكنة:

* 0 — معطّل.
* 1 — مفعّل.

افتراضيًا، تُزال تكرارات الكتل المُدرجة في الجداول المكررة بواسطة تعليمة `INSERT` (راجع [تكرار البيانات](/docs/ar/reference/engines/table-engines/mergetree-family/replication)).
وبالنسبة إلى الجداول المكررة، تُزال افتراضيًا تكرارات أحدث 100 كتلة فقط لكل partition (راجع [replicated\_deduplication\_window](/docs/ar/reference/settings/merge-tree-settings#replicated_deduplication_window)، [replicated\_deduplication\_window\_seconds](/docs/ar/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
أما الجداول غير المكررة، فراجع [non\_replicated\_deduplication\_window](/docs/ar/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

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

يتيح هذا الإعداد للمستخدم تحديد آلية إزالة التكرار الخاصة به في MergeTree/ReplicatedMergeTree.
فعلى سبيل المثال، من خلال تقديم قيمة unique لهذا الإعداد في كل تعليمة INSERT،
يمكن للمستخدم تجنّب إزالة تكرار البيانات inserted نفسها.

القيم الممكنة:

* أي String

يُستخدم `insert_deduplication_token` في إزالة التكرار *فقط* عندما لا تكون قيمته فارغة.

بالنسبة إلى الجداول المكررة، افتراضيًا لا تتم إزالة التكرار إلا لأحدث 100 عملية inserts لكل partition (راجع [replicated\_deduplication\_window](/docs/ar/reference/settings/merge-tree-settings#replicated_deduplication_window)، [replicated\_deduplication\_window\_seconds](/docs/ar/reference/settings/merge-tree-settings#replicated_deduplication_window_seconds)).
أما الجداول غير المكررة، فراجع [non\_replicated\_deduplication\_window](/docs/ar/reference/settings/merge-tree-settings#non_replicated_deduplication_window).

<Note>
  يتم تتبّع `insert_deduplication_token` لكل partition، لذا يمكن لعدة partitions مكتوبة بعملية insert واحدة أن تحمل token نفسه. ومن دون token، يُحتسب checksum الافتراضي للمحتوى على مستوى block inserted بالكامل، لذلك لا تُزال تكرارات عملية insert إلا عندما تتطابق بياناتها بالكامل مع insert سابقة (retry)، وليس عندما تتطابق rows الخاصة بـ partition واحدة فقط مصادفةً مع insert مختلفة.
</Note>

مثال:

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

يتيح إدراج [القيم الافتراضية](/docs/ar/reference/statements/create/table#default_values) بدلًا من [NULL](/docs/ar/reference/syntax#null) في الأعمدة ذات نوع البيانات غير [Nullable](/docs/ar/reference/data-types/nullable)، أو يعطّله.
إذا كان نوع العمود غير Nullable وكان هذا الإعداد معطّلًا، فإن إدراج `NULL` يؤدي إلى حدوث استثناء. أما إذا كان نوع العمود Nullable، فتُدرج قيم `NULL` كما هي بغضّ النظر عن هذا الإعداد.

ينطبق هذا الإعداد على استعلامات [INSERT ... SELECT](/docs/ar/reference/statements/insert-into#inserting-the-results-of-select). لاحظ أن الاستعلامات الفرعية `SELECT` يمكن ربطها بعبارة `UNION ALL`.

القيم الممكنة:

* 0 — يؤدي إدراج `NULL` في عمود غير Nullable إلى حدوث استثناء.
* 1 — تُدرج القيمة الافتراضية للعمود بدلًا من `NULL`.

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

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

إذا لم تكن القيمة `0`، فإنها تحدد الشظية من جدول [Distributed](/docs/ar/reference/engines/table-engines/special/distributed) التي ستُدرج فيها البيانات بشكل متزامن.

إذا كانت قيمة `insert_shard_id` غير صحيحة، فسيطرح الخادم استثناءً.

لمعرفة عدد الشظايا في `requested_cluster`، يمكنك التحقق من إعدادات الخادم أو استخدام هذا الاستعلام:

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

القيم الممكنة:

* 0 — معطّل.
* أي رقم من `1` إلى `shards_num` للجدول [Distributed](/docs/ar/reference/engines/table-engines/special/distributed) المقابل.

**مثال**

الاستعلام:

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

النتيجة:

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