Was steht bitte in der Create-Anweisung des Triggers:
Delphi-Quellcode:
CREATE TRIGGER trigger-name for table-name
[ACTIVE | INACTIVE]
{BEFORE | AFTER} <actions>
[POSITION number]
AS
Before oder After?
Kannst Du im Trigger irgendeine (wie auch immer geartete) Ausgabe machen, um zu erkennen, ob der Trigger beim Aufruf aus dem Programm überhaupt aktiv wird?
Er scheint ja zuweilen zu arbeiten, oder konntest Du schon sicherstellen (dich vergewissern), dass er auf jeden Fall immer aufgerufen wird.
Oder:
Könntest Du ein (vorübergehendes) Logging in den Trigger einbauen, analog zu
http://www.firebirdsql.org/refdocs/l...exception.html
Eigentlich erscheint mir der Trigger korrekt zu sein, er dürfte ja diesem Beispiel entsprechen:
Delphi-Quellcode:
create trigger biu_parts for parts
before insert or update
as
begin
/* conditional code when inserting: */
if (inserting and new.id is null)
then new.id = gen_id(gen_partrec_id, 1);
/* common code: */
new.partname_upper = upper(new.partname);
end
Wenn Du im Trigger eine
Exception schmeißt (ohne jede Bedingung, immer und grundsätzlich
EXCEPTION [<exception-name> [custom-message]]
, bekommst Du sie aus dem Programm zu sehen? Wenn nein, dann wird der Trigger (höchstwahrscheinlich) nicht immer aufgerufen.
Allerdings hab' ich überhaupt keine Idee, warum es eine derartige Situation geben sollte.