Версия источника: 4880e8b4372c96001c2e052be28b68a95d31252b
Синхронизировано: 2026-11-09T11:15:07.649Z
Источник: https://github.com/sergey-from-riders/vibecoding-base/tree/4880e8b4372c96001c2e052be28b68a95d31252b

<a id="database-history-delete"></a>

# История и удаление данных

## Коротко

Мягкое удаление, история версий и аудит решают разные задачи.

## Плохо

```text
deleted_at есть, но все запросы читают удалённое.
```

## Хорошо

```text
Чтение учитывает deleted_at.
Уникальность и восстановление проверены.
Срок окончательной очистки определён.
```

## Почему

Флаг удаления сам по себе не удаляет данные и не создаёт историю изменений.

## Когда применять

Аудит фиксирует, кто и что изменил; история версий позволяет восстановить прежнее содержимое. Выберите нужные механизмы отдельно. При soft delete проверьте уникальность активных записей, восстановление и окончательную очистку. Срок хранения задаёт политика проекта.

## Как проверить

- Проверьте восстановление, повторное создание и очистку связанных данных.

## Человек

Определяет сроки хранения, восстановление и требования к удалению.

## Агент

Готовит схему или миграцию, проверяет граничные значения и совместимость с текущими запросами.

Контроль результата:

- Проверьте восстановление, повторное создание и очистку связанных данных.

## Источники

- [PostgreSQL: Documentation: 18: 11.8. Partial Indexes](https://www.postgresql.org/docs/18/indexes-partial.html)
- [PostgreSQL: Documentation: 18: 41.10. Trigger Functions](https://www.postgresql.org/docs/18/plpgsql-trigger.html)

Уровень: Зависит от задачи. Проверено: 2026-11-09. Изменено: 2026-11-09.

[Исходный файл](https://github.com/sergey-from-riders/vibecoding-base/blob/4880e8b4372c96001c2e052be28b68a95d31252b/registry/standards/database/postgres/rules/history-delete.md)
