Доступные версии документации

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=MANAGER";
    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
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter