Транзакции

Подобно своим аналогам в BDE и ADO компонент TSQLConnection поддерживает механизм транзакций и делает это сходным образом.
Начало, фиксацию и откат транзакции выполняют методы

procedure StartTransaction(TransDesc: TTransactionDesc);

procedure Commit(TransDesc: TTransactionDesc);

procedure Rollback(TransDesc: TTransactionDesc);

При этом запись TTransactionDesc возвращает параметры транзакции:

TTransIsolationLevel = (xilDIRTYREAD, xilREADCOMMITTED, xilREPEATABLEREAD, xilCUSTOM);

TTransactionDesc = packed record

 TransactionID : LongWord;

 GloballD : LongWord;

 IsolationLevel : TTransIsolationLevel;

 Customlsolation : LongWord;

end;

Запись содержит уникальный в рамках соединения идентификатор транзакции TransactionID И уровень изоляции IsolationLevel. При уровне изоляции xilCustom определяется параметр Customlsolation. Идентификатор GiobaliD используется при работе с сервером Oracle.
Некоторые серверы БД не поддерживают транзакции, и для определения этого факта используется свойство
property TransactionsSupported: LongBool;
Если соединение уже находится в транзакции, свойству
property InTransaction: Boolean;
присваивается значение True. Поэтому, если сервер не поддерживает множественные транзакции, всегда полезно убедиться, что соединение не обслуживает начатую транзакцию:

var Translnfo: TTransactionDesc;

(...)

if Not MyConnection.InTransaction then

 try

  MyConnection.StartTransaction(Translnfo); {...}

  MyConnection.Commit(Translnfo);

 except

  MyConnection.Rollback(Translnfo);

 end;

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...