> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> توثيق تعليمات ALTER TABLE ... UPDATE

# تعليمات ALTER TABLE ... UPDATE

```sql theme={null}
ALTER TABLE [db.]table [ON CLUSTER cluster] UPDATE column1 = expr1 [, ...] [IN PARTITION partition_id] WHERE filter_expr
```

يُعدِّل البيانات المطابقة لتعبير التصفية المحدد. وهو مُنفَّذ على شكل [mutation](/ar/reference/statements/alter/index#mutations).

<Note>
  تجعل البادئة `ALTER TABLE` هذه الصياغة مختلفة عن معظم الأنظمة الأخرى التي تدعم SQL. والمقصود منها الإشارة إلى أن هذه العملية، بخلاف الاستعلامات المشابهة في قواعد بيانات OLTP، عملية ثقيلة وغير مصممة للاستخدام المتكرر.
</Note>

يجب أن يكون `filter_expr` من النوع `UInt8`. يحدّث هذا الاستعلام قيم الأعمدة المحددة إلى قيم التعبيرات المقابلة في الصفوف التي تكون فيها قيمة `filter_expr` غير صفرية. تُحوَّل القيم إلى نوع العمود باستخدام العامل `CAST`. لا يُدعم تحديث الأعمدة المستخدمة في حساب المفتاح الأساسي أو مفتاح التقسيم.

يمكن أن يحتوي الاستعلام الواحد على عدة أوامر مفصولة بفواصل.

يُحدَّد تزامن معالجة الاستعلام بواسطة الإعداد [mutations\_sync](/ar/reference/settings/session-settings/mutations#mutations_sync). وهو غير متزامن افتراضيًا.

**انظر أيضًا**

* [التعديلات](/ar/reference/statements/alter/index#mutations)
* [تزامن استعلامات ALTER](/ar/reference/statements/alter/index#synchronicity-of-alter-queries)
* الإعداد [mutations\_sync](/ar/reference/settings/session-settings/mutations#mutations_sync)
* [`UPDATE` خفيف الوزن](/ar/reference/statements/update) - تحديث خفيف بديل يستخدم أجزاء التصحيح
* [`APPLY PATCHES`](/ar/reference/statements/alter/apply-patches) - تطبيق التصحيحات يدويًا من التحديثات الخفيفة

<div id="materialized-columns">
  ## الأعمدة المُجسَّدة
</div>

إذا كان تعبير عمود [`MATERIALIZED`](/ar/reference/statements/create/table#materialized) يقرأ عمودًا
مُحدَّثًا، تُعيد عملية التعديل حسابه، بحيث تظل قيمته المخزنة متسقة مع البيانات الجديدة.

<div id="columns-calculated-from-ephemeral-columns">
  ### الأعمدة المحسوبة من أعمدة EPHEMERAL
</div>

لا يوجد العمود [`EPHEMERAL`](/ar/reference/statements/create/table#ephemeral) إلا طوال مدة عملية
`INSERT` ولا يُخزَّن مطلقًا، لذلك لا يمكن لعملية تعديل إعادة حساب عمود `MATERIALIZED` محسوب منه.
ويحتفظ هذا العمود بالقيمة المحسوبة وقت تنفيذ `INSERT`، التي لا تعود بعد ذلك مطابقة لتعبيره:

```sql theme={null}
CREATE TABLE test
(
    x Int32,
    e Int32 EPHEMERAL 0,
    m Int32 MATERIALIZED x + e
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO test (x, e) VALUES (1, 7);

ALTER TABLE test UPDATE x = 2 WHERE 1;

SELECT x, m FROM test;
```

```text theme={null}
┌─x─┬─m─┐
│ 2 │ 8 │
└───┴───┘
```

`m` تساوي `8`، وهي القيمة المحسوبة أثناء `INSERT`، وليست `2 + 7`: فقيمة `e` غير متاحة
خارج عملية `INSERT` التي زوّدتها بها. تسجّل عملية التعديل تحذيرًا في سجل الخادم عند تخطي
عمود لهذا السبب. لتحديث هذا العمود، أعد تنفيذ `INSERT` للصفوف المتأثرة.

<div id="related-content">
  ## محتوى ذي صلة
</div>

* مدونة: [التعامل مع التحديثات وعمليات الحذف في ClickHouse](https://clickhouse.com/blog/handling-updates-and-deletes-in-clickhouse)
