Rollback(String)
Метод отменяет текущую транзакцию до указанной точки сохранения.
Установленные точки сохранения до указанной точки сохраняются, последующие – удаляются. Выполнение транзакции продолжается.
Примечание
Данный метод может использоваться в клиентских приложениях, ориентированных исключительно на работу с СУБД ЛИНТЕР.
Синтаксис
public void RollBack(string savePointName);
savePointName
– имя точки сохранения.
Возвращаемое значение
Значение типа void.
Исключения
InvalidOperationException | Транзакция уже завершена (подтверждена/отменена/соединение закрыто). | |
ArgumentNullException | Параметр savePointName имеет значение null. | |
ArgumentException | Параметр savePointName равен пустой строке или ссылается на несуществующую точку сохранения. | |
LinterSqlException | Код завершения СУБД ЛИНТЕР не равен 0. |
Пример
// C# using System; using System.Data; using System.Data.LinterClient; class RollbackSample { static void Main() { // Соединение с БД LinterDbConnection con = new LinterDbConnection(); con.ConnectionString = "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER8"; con.Open(); // Создание объекта LinterDbCommand, связанного с установленным соединением LinterDbCommand cmd = con.CreateCommand(); // Создаем тестовую таблицу cmd.CommandText = "create or replace table test (abc varchar(255))"; cmd.ExecuteNonQuery(); // Начинаем транзакцию в режиме Exclusive LinterDbTransaction txn = con.BeginTransaction(IsolationLevel.ReadCommitted); cmd.Transaction = txn; // Делаем первый insert в тестовую таблицу cmd.CommandText = "insert into test (abc) values ('запись 1')"; cmd.ExecuteNonQuery(); // Создаем точку сохранения SP1 txn.Save("SP1"); // Делаем второй insert в тестовую таблицу cmd.CommandText = "insert into test (abc) values ('запись 2')"; cmd.ExecuteNonQuery(); // Создаем точку сохранения SP2 txn.Save("SP2"); // Делаем третий insert в тестовую таблицу cmd.CommandText = "insert into test (abc) values ('запись 3')"; cmd.ExecuteNonQuery(); // Создаем точку сохранения SP3 txn.Save("SP3"); // Выполняем метод Rollback(SP2) txn.Rollback("SP2"); // Выполняем метод Commit() для всей транзакции txn.Commit(); // Читаем записи из test cmd.CommandText = "select abc from test"; LinterDbDataReader reader = cmd.ExecuteReader(); // Должны быть только две первых записи while (reader.Read()) { Console.WriteLine(reader.GetValue(0)); } txn.Dispose(); cmd.Dispose(); con.Close(); con.Dispose(); } } Результат выполнения примера: запись 1 запись 2