Вопрос проверяет понимание свойств транзакций и роли согласованности в базах данных.
Consistency означает, что после завершения транзакции база данных остаётся в корректном состоянии и все ограничения соблюдены. Это включает проверки ключей, типов, ограничений и триггеров. Если транзакция нарушает правила, она откатывается. Таким образом, данные не переходят в некорректное состояние.
Consistency в ACID означает, что транзакция переводит базу данных из одного корректного состояния в другое корректное состояние.
Корректность определяется:
ограничениями таблиц
внешними ключами
уникальностью
бизнес-правилами
Допустим, есть таблица счетов, где баланс не может быть отрицательным.
Если транзакция попытается нарушить это правило, база должна:
обнаружить нарушение
откатить изменения
сохранить целостность данных
Пример:
UPDATE accounts
SET balance = balance - 1000
WHERE id = 1;
Если проверка запрещает отрицательный баланс, операция не завершится успешно.
Важно различать:
Atomicity — всё или ничего
Consistency — соблюдение правил
Isolation — изоляция транзакций
Durability — сохранность после фиксации
Consistency не про конкуренцию, а про корректность данных.
Consistency особенно важна:
в финансовых системах
в учёте заказов и складов
в любых системах с ограничениями целостности
Если ограничения настроены неправильно, база может оставаться формально «валидной», но логически неверной.
Consistency гарантирует, что база данных после транзакции остаётся в допустимом состоянии. Это достигается за счёт ограничений, проверок и откатов транзакций при нарушениях.