Hallo,
ich habe zwar das Problem, daß ich Zeos nicht kenne, ich habe aber eine Ahnung, wo Du suchen mußt. Vornweg, Deine Datenbankdeklaration sieht ganz gut aus.
Was passiert:
1. Beim Andern
Die Komponente liest die Felder aus der Datenbank, Du änderst die Felder und Zeos schreibt die geänderten Felder zurück, ungefähr so:
Update tabelle set adr_bas_pid=alterwert1, feld2=neuerwert2 where adr_bas_pid=alterwert1 and feld2=alterwert2
2. Beim Einfügen
Du füllst die Felder und schickst diese an die Datenbank, Zeos bekommt nichts von Deinem Feld adr_bas_pid mit
insert into tabelle (adr_bas_pid, feld2) values (null, wert2)
3. Beim Einfügen und anschließendem Ändern
Da Du den Datensatz nicht verlassen hast, bildet sich Zeos vermutlich ein, alle Feldinhalte zu kennen:
Update tabelle set adr_bas_pid=null, feld2=neuerwert2 where adr_bas_pid=null and feld2=alterwert2
allerdings hast Du mit dem Trigger dem Feld adr_bas_pid einen Inhalt verpaßt.
Da ich, wie gesagt, zeos nicht kenne, mußt Du mal alles untersuchen, was irgendwie wie update (oder auch refresh) heißt. Und dann müßtest Du ihm sagen, daß er das Feld adr_bas_pid bitte nicht vergleichen soll. Und damit kommen wir zum Problem, das Feld hast Du sicherlich genau für diesen Zweck angelegt.
Als Lösung, falls Du innerhalb Zeos nicht fündig wirst, kann ich Dir nur anbieten, den Trigger nicht zu verwenden, sondern den Generator über eine Stored_proc abzufragen und dann in das Feld adr_bas_pid einzutragen.
Ich hoffe, es hilft, und seit bitte nachsichtig, falls ich
SQL-Fehler gemacht habe.
Viele Grüße