Управление транзакциями через 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(); }