Транзакции
Подобно своим аналогам в 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;