Ja, das da kommt der Sache schon sehr, sehr nahe. Der Effekt fiel genau deshalb nicht auf, weil der Trigger nicht zum Zuge kommt, es sei denn in der alten Table ist das AutoInc Feld nicht besetzt. Eben wegen :
IF (NEW.ID IS NULL) THEN
ist diese eben NICHT Null, sondern der alte AutoInc-Wert
Und da die Table große Lücken hat, ist in Interbase (bzw.
FB 1.0) die Gefahr nicht so groß, bei kurzen Testeingaben diesen Fehler überhaupt zu sehen. Aber der wird mit Sicherheit kommen.
Die IDs müssen so bleiben, wegen der referentiellen Integrität der
DB. Das geht jetzt so mit einer
Query :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
pFIBQuery1.SQL.Text := 'SET GENERATOR GEN_DS_ID TO 59';
pFIBQuery1.ExecQuery;
pFIBTransAction1.Commit;
pFIBDataBase1.Close;
end;
Ist mit IBExpert überprüft. Allerdings taucht da auch noch eine Ungereimtheit auf. Das Hauptproblem besteht nun eigentlich nur noch darin, wo und wie ich den Trigger kurzfristig programmgesteuert deaktiviere.