Programming: Delphi


Иллюстрированный самоучитель по 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;




Назад | Оглавление | Вперёд




При перепечатке любого материала с сайта, видимая ссылка на источник www.warayg.narod.ru и все имена, ссылки авторов обязательны.

© 2005
 

Hosted by uCoz