Руководство по работе с БД Firebird с использованием библиотеки ADO .Net 2.0

Управление транзакциями через SQL


Помимо управления транзакциями через Ole Db интерфейсы, IBProvider осуществляет специальную поддержку SQL – запросов для управления транзакциями: SET TRANSACTION, COMMIT, COMMIT RETAIN, ROLLBACK и для Firebird 2 – ROLLBACK RETAIN. Данный метод позволяет указывать специфические параметры контекста транзакции, которые не стандартизированы в OLE DB, но поддерживаются в Firebird. Следующий пример демонстрирует управление транзакциями через SQL:

public void SQLTransactionTest() { OleDbConnection con1 = ConnectionProvider.CreateConnection(); con1.Open();

OleDbCommand cmd = new OleDbCommand( "SET TRANSACTION READ ONLY WAIT ISOLATION LEVEL READ COMMITTED", con1); cmd.ExecuteNonQuery();

cmd.CommandText = "select count(*) from employee"; Assert.AreNotEqual(0, cmd.ExecuteScalar());

//подтверждение транзакции с последующим использованием её контекста

cmd.CommandText = "COMMIT RETAIN"; cmd.ExecuteNonQuery();

cmd.CommandText = "select count(*) from employee"; Assert.AreNotEqual(0, cmd.ExecuteScalar());

cmd.CommandText = "COMMIT"; cmd.ExecuteNonQuery();

con1.Close(); }



Содержание раздела