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

Commit

Метод подтверждает текущую транзакцию и завершает её. Используемые ресурсы не освобождаются.

Синтаксис
public abstract void Commit();
Возвращаемое значение

Значение типа void.

Исключения
InvalidOperationException Транзакция уже завершена (подтверждена/отменена/соединение закрыто).
LinterSqlException Код завершения СУБД ЛИНТЕР не равен 0.
Пример
      // C#
using System;
using System.Data;
using System.Data.Common;

class CommitSample
{
  static void Main()
  {
    // В примере инициируется транзакция и в таблицу auto добавляются две записи с
    // одинаковым значением столбца personid
    // Если столбец personid не является первичным ключом, запись с дубликатом
    // значения добавляется и транзакция завершается успешно.
    // Если personid является первичным ключом, то вторая запись нарушает
    //  целостность БД и транзакция отменяется
    DbProviderFactory factory =
      DbProviderFactories.GetFactory("System.Data.LinterClient");
    DbConnection con = factory.CreateConnection();
    con.ConnectionString = "Data Source=LOCAL;User ID=SYSTEM;Password=MANAGER";
    con.Open();
    DbCommand cmd = factory.CreateCommand();
    cmd.Connection = con;
    // Проверяем кол-во строк в таблице auto  перед началом транзакции
    cmd.CommandText = "SELECT COUNT(*) FROM auto";
    int AutoCount = int.Parse(cmd.ExecuteScalar().ToString());
    // отображаем кол-во строк в таблице auto
    Console.WriteLine("Кол-во строк в таблице AUTO = " + AutoCount);
    // Начинаем транзакцию
    DbTransaction txn = con.BeginTransaction(IsolationLevel.ReadCommitted);
    cmd.Transaction = txn;
    try
    {
      // Добавляем дважды одну и ту же строку
      cmd.CommandText = "INSERT INTO auto(personid) VALUES (2000)";
      cmd.ExecuteNonQuery();
      cmd.ExecuteNonQuery(); // При добавлении дубликата  возможно исключение
      txn.Commit();
    }
    catch (Exception e)
    {
      // Печать диагностического сообщения
      Console.WriteLine("Ошибка добавления записи = " + e.Message);
      // Отмена транзакции
      txn.Rollback();
    }
    // Проверяем кол-во строк в таблице auto после завершения транзакции
    cmd.CommandText = "SELECT COUNT(*) FROM auto";
    AutoCount = int.Parse(cmd.ExecuteScalar().ToString());
    // Отображаем полученное кол-во строк
    // Если столбец personid  является первичным ключом,  кол-во  строк  не должно
    // измениться, в противном случае должно увеличиться на 2
    Console.WriteLine("Кол-во строк в таблице AUTO  = " + AutoCount);
    txn.Dispose();
    cmd.Dispose();
    con.Close();
    con.Dispose();
  }
}
Результат выполнения примера:
Кол-во строк в таблице AUTO = 1001
Ошибка добавления записи = [Linter error] duplicate value for primary or unique key
Кол-во строк в таблице AUTO  = 1001
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter