Ответ
При использовании SQLite транзакций в Android, если одна операция в транзакции завершается успешно, а другая нет, вся транзакция откатывается автоматически (rollback). Это обеспечивает атомарность операций - либо все изменения применяются, либо ни одно.
db.beginTransaction()
try {
// Операция 1 (успешная)
db.insert("table1", null, values1)
// Операция 2 (с ошибкой)
db.insert("table2", null, values2) // Предположим, здесь исключение
db.setTransactionSuccessful()
} catch (e: Exception) {
// Транзакция автоматически откатится
} finally {
db.endTransaction()
}
В этом примере ни одна из вставок не будет применена, так как транзакция не была помечена как успешная (setTransactionSuccessful() не был вызван из-за исключения).