Компонент TIBTransaction

Компонент TIBTransaction инкапсулирует средства управления транзакцией при работе с сервером InterBase. Для этого он должен быть связан с компонентом TiBDatabase при помощи своего свойства

property DefaultDatabase: TiBDatabase;

Один компонент транзакции может быть связан с несколькими компонентами TiBDatabase. Для этого необходимо задать один компонент транзакции в свойствах DefaultTransaction всех необходимых компонентов соединений (см. выше). Список всех связанных компонентов соединений содержится в свойстве

property Databases[Index: Integer]: TiBDatabase;

а их общее число возвращает свойство

property DatabaseCount: Integer;

Во время выполнения новое соединение может быть связано с транзакцией методом

function AddDatabase(db: TIBDatabase): Integer;

Или же, связь может быть отменена:

procedure RemoveDatabase(Idx: Integer);

А метод

procedure RemoveDatabases;

разрывает все установленные связи с компонентом TIBDatabase.

Индекс связанного соединения в списке Databases транзакции можно получить при помощи метода

function FindDatabase (db: TIBDatabase): Integer;

Например, если вам не известно ничего, кроме имени компонента, можно поступить так:

var i, FIndex: Integer;

...

for i := 0 to Forml.ComponentCount — 1 do

 if Forml.Components[i].Name = 'IBDatabasel'

then FIndex := 

IBTransactionl.FindDatabase(TIBDatabase(Forml. Components[i]));

...

Соединение, заданное по умолчанию свойством DefaultDatabase, возвращает метод

function FindDefaultDatabase: TIBDatabase;

Транзакция может иметь набор параметров, задать которые можно при помощи свойства

property Params: TStrings;

аналогично компоненту TIBDatabase. Прямой доступ для чтения к буферу параметров транзакции Transaction Parameters Buffer (TPB) типа pchar обеспечивает свойство

property TPB: PChar;

Длина буфера содержится в свойстве

property TPBLength: Short;

Дескриптор транзакции представлен свойством

property Handle: TISC_TR_HANDLE;

После того как транзакция настроена, ее можно начать, сохранить или отменить.

Транзакция стартует при помощи метода

procedure StartTransaction;

При необходимости сохранить все сделанные в рамках текущей транзакции изменения используется метод

procedure Commit;

Если выполненные действия нужно отменить, применяется метод

procedure Rollback;

Для открытия и сохранения транзакции можно использовать традиционное свойство

property Active: Boolean;

После начала новой транзакции свойство

property InTransaction: Boolean;

принимает значение True, а после фиксации или отката — значение False.

При работе с сервером InterBase 6.0 можно использовать методы commit-Retaining и RollbackRetaining. В отличие от стандартных операций фиксации и отката транзакций, эти методы после передачи или отмены изменений оставляют текущую транзакцию открытой.

Если сервер перегружен и не откликается на транзакцию, то по истечении времени, заданного свойством

property IdleTimer: Integer;

 выполняется действие, заданное свойством

type TTransactionAction = (taRollback, taCommit, taRollbackRetaining,

taCommitRetaining);

property DefaultAction: TTransactionAction;

taRollback — откат транзакции; 

taCommit — фиксация транзакции;

taRollbackRetaining — отмена изменений без завершения транзакции (для сервера InterBase 6.0);

 taCommitRetaining — фиксация изменений без завершения транзакции (для сервера InterBase 6.0).

Для компонента транзакции можно настроить ее автоматическое завершение при закрытии последнего открытого компонента, инкапсулирующего набор данных, связанного с тем же соединением, что и транзакция.

Для этого свойство

type TAutoStopAction = (saNone, saRollback, saCoramit,

 saRollbackRetaining, saCommitRetaining); property AutoStopAction : TAutoStopAction;

не должно иметь значение saNone.

Остальные значения свойства выполняют следующие действия:

Метод

procedure CheckAutoStop;

выполняет действие, предусмотренное текущим значением свойства

AutoStopAction.

Диагностика состояния транзакции во время выполнения осуществляется группой специальных методов. В случае отрицательного результата все они генерируют исключение EiBClientError.

Метод

procedure CheckDatabasesInList;

проверяет, имеются ли в списке Databases связанные соединения. Метод

procedure ChecklnTransaction;

проверяет, открыта ли в данный момент транзакция. Метод

procedure CheckNotlnTransaction;

проверяет, закрыта ли в данный момент транзакция.

Единственный метод-обработчик транзакции

property OnldleTimer: TNotifyEvent;

вызывается по истечении срока ожидания выполнения транзакции, заданного свойством IdleTimer.

 


Знаете ли Вы, почему "черные дыры" - фикция?
Согласно релятивистской мифологии, "чёрная дыра - это область в пространстве-времени, гравитационное притяжение которой настолько велико, что покинуть её не могут даже объекты, движущиеся со скоростью света (в том числе и кванты самого света). Граница этой области называется горизонтом событий, а её характерный размер - гравитационным радиусом. В простейшем случае сферически симметричной чёрной дыры он равен радиусу Шварцшильда".
На самом деле миф о черных дырах есть порождение мифа о фотоне - пушечном ядре. Этот миф родился еще в античные времена. Математическое развитие он получил в трудах Исаака Ньютона в виде корпускулярной теории света. Корпускуле света приписывалась масса. Из этого следовало, что при высоких ускорениях свободного падения возможен поворот траектории луча света вспять, по параболе, как это происходит с пушечным ядром в гравитационном поле Земли.
Отсюда родились сказки о "радиусе Шварцшильда", "черных дырах Хокинга" и прочих безудержных фантазиях пропагандистов релятивизма.
Впрочем, эти сказки несколько древнее. В 1795 году математик Пьер Симон Лаплас писал:
"Если бы диаметр светящейся звезды с той же плотностью, что и Земля, в 250 раз превосходил бы диаметр Солнца, то вследствие притяжения звезды ни один из испущенных ею лучей не смог бы дойти до нас; следовательно, не исключено, что самые большие из светящихся тел по этой причине являются невидимыми." [цитата по Брагинский В.Б., Полнарёв А. Г. Удивительная гравитация. - М., Наука, 1985]
Однако, как выяснилось в 20-м веке, фотон не обладает массой и не может взаимодействовать с гравитационным полем как весомое вещество. Фотон - это квантованная электромагнитная волна, то есть даже не объект, а процесс. А процессы не могут иметь веса, так как они не являются вещественными объектами. Это всего-лишь движение некоторой среды. (сравните с аналогами: движение воды, движение воздуха, колебания почвы). Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution