Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csSpSqRb 423 of 509 menu
◀ ▶

Rollback транзакции в C#

Вызов Rollback отменяет вставки и обновления текущей транзакции. Соединение при этом остаётся открытым.

После INSERT и Rollback COUNT(*) равен 0:

using Microsoft.Data.Sqlite; using SqliteConnection db = new("Data Source=:memory:"); db.Open(); using (SqliteCommand c = db.CreateCommand()) { c.CommandText = "CREATE TABLE t (v INT)"; c.ExecuteNonQuery(); } using SqliteTransaction tx = db.BeginTransaction(); using (SqliteCommand ins = db.CreateCommand()) { ins.Transaction = tx; ins.CommandText = "INSERT INTO t VALUES (1)"; ins.ExecuteNonQuery(); } tx.Rollback(); using SqliteCommand q = db.CreateCommand(); q.CommandText = "SELECT COUNT(*) FROM t"; Console.WriteLine(q.ExecuteScalar());

Без явной транзакции каждая команда сразу сохраняется сама: это отдельный автокоммит. Rollback отменяет только то, что начато через BeginTransaction.

Положите на счёт 80. Внутри транзакции прибавьте 20, затем отмените её и выведите баланс.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить