Иллюстрированный самоучитель по Delphi 7 для профессионалов

Транзакции

Подобно своим аналогам в 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;
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.