Как называеться свойство когда все или не все во время транзации

«Как называеться свойство когда все или не все во время транзации» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Атомарность (Atomicity) — одно из ключевых свойств транзакций (ACID). Гарантирует, что транзакция выполнится полностью или не выполнится вообще. Если на любом этапе происходит ошибка, все изменения откатываются.

Пример с database/sql в Go:

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}

_, err = tx.Exec("UPDATE accounts SET balance = balance - 100 WHERE user_id = 1")
if err != nil {
    tx.Rollback() // Откат при ошибке
    return
}

_, err = tx.Exec("UPDATE accounts SET balance = balance + 100 WHERE user_id = 2")
if err != nil {
    tx.Rollback() // Откат при ошибке
    return
}

err = tx.Commit() // Фиксация только если всё успешно
if err != nil {
    log.Fatal(err)
}