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

> Документация по управлению ограничениями

# Управление ограничениями

Ограничения можно добавлять, изменять и удалять с помощью следующего синтаксиса:

```sql theme={null}
ALTER TABLE [db].name [ON CLUSTER cluster] ADD CONSTRAINT [IF NOT EXISTS] constraint_name {CHECK|ASSUME} expression;
ALTER TABLE [db].name [ON CLUSTER cluster] MODIFY CONSTRAINT [IF EXISTS] constraint_name {CHECK|ASSUME} expression;
ALTER TABLE [db].name [ON CLUSTER cluster] DROP CONSTRAINT [IF EXISTS] constraint_name;
```

Как и при создании таблицы, ограничение можно объявить либо как `CHECK` (проверяется при `INSERT`), либо как `ASSUME` (считается истинным оптимизатором без проверки). О разнице между ними см. [constraints](/docs/ru/reference/statements/create/table#constraints).

`MODIFY CONSTRAINT` заменяет объявление существующего ограничения, сохраняя его положение в определении таблицы. Он также может изменить тип ограничения (например, с `CHECK` на `ASSUME`). Это эквивалентно удалению ограничения и его повторному добавлению с новым объявлением. Если ограничение не существует, запрос генерирует ошибку, если не указано `IF EXISTS`.

Подробнее см. в разделе [constraints](/docs/ru/reference/statements/create/table#constraints).

Запросы добавляют, изменяют или удаляют метаданные об ограничениях таблицы, поэтому обрабатываются немедленно.

<Tip>
  Проверка ограничения **не будет выполняться** для существующих данных, если оно было добавлено или изменено.
</Tip>

Все изменения в реплицируемых таблицах передаются через ZooKeeper и будут применены также на других репликах.
