Sizlerle bir sorunumu paylaşmak istiyorum. Firebird 2.1 kullandığım bir projede aşağıdakiki şekilde oluşturduğum 60 adet triger im var.
Kod: Tümünü seç
CREATE TRIGGER SATIS_EVENT FOR SATIS
ACTIVE AFTER INSERT OR UPDATE OR DELETE POSITION 0
AS
begin
post_event 'SATISCH';
end
Delphi Unitleri içinde IBEvent unitini inceledim.
Kod: Tümünü seç
unit IBEvents;
.......
.......
const
IB_MAX_EVENT_BLOCK = 15; // maximum events handled per block by InterBase
IB_MAX_EVENT_LENGTH = 64; // maximum event name length
{$IFDEF LINUX}
INFINITE = $FFFFFFFF;
{$ENDIF}
Kod: Tümünü seç
....
....
procedure TIBEvents.RegisterEvents;
var
i: Integer;
begin
if csDesigning in ComponentState then
exit;
if not Assigned(FDatabase) then
IBError(ibxeDatabaseNameMissing, []);
if (FThreads.Count = 0) then
begin
if (FEvents.Count > 0) then
begin
for i := 0 to ((FEvents.Count - 1) div IB_MAX_EVENT_BLOCK) do
FThreads.Add(TIBEventThread.Create(Self, i, ThreadEnded));
end;
end
else
IBError(ibxeEventAlreadyRegistered, []);
end;
Kod: Tümünü seç
procedure TIBEventThread.RegisterEvents;
function EBP(Index: Integer): PChar;
begin
Inc(Index, (EventGroup * IB_MAX_EVENT_BLOCK));
if (Index > Parent.FEvents.Count) then
Result := nil
else
Result := PChar(Parent.FEvents[Index - 1]);
end;
begin
EventBuffer := nil;
ResultBuffer := nil;
EventBufferLen := 0;
FirstTime := True;
EventCount := (Parent.FEvents.Count - (EventGroup * IB_MAX_EVENT_BLOCK));
if (EventCount > IB_MAX_EVENT_BLOCK) then
EventCount := IB_MAX_EVENT_BLOCK;
EventBufferLen := Tsib_event_block(isc_event_block)(@EventBuffer,
@ResultBuffer, EventCount, EBP(1), EBP(2), EBP(3), EBP(4), EBP(5), EBP(6),
EBP(7), EBP(8), EBP(9), EBP(10), EBP(11), EBP(12), EBP(13), EBP(14), EBP(15));
end;
http://www.ibphoenix.com/main.nfs?a=ibp ... ge=ibp_ibx adresindeki
Kod: Tümünü seç
IBEvents
InterBase allows triggers and stored procedures to raise events. The IBEvents component lets your application register interest in up to 15 events. When an event occurs the IBEvents component’s OnEventAlert event fires allowing your application to respond to the event.
Kod: Tümünü seç
InterBase depolanır ve prosedürleri etkinlikleri artırmak için tetikler sağlar. IBEvents bileşeni kadar 15 etkinlik başvuru kayıt ilgi sağlar. Bir olay IBEvents bileşenin OnEventAlert olay gerçekleştiğinde uygulama olay yanıt izin ateşler.
Yada bu sorunların yaşanmaması için ne yapabiliriz.