Wie ist denn ID in der Datenbank definiert? Als Not Null?
Wenn das von der Datenbank vor dem Ausführen des Triggers geprüft wird, hast Du ohne Angabe einer ID keine Chance.
Ggfls. dashier ändern:
IF (NEW.ID IS NULL) THEN
in
IF (NEW.ID IS NULL) or (NEW.ID = -1) THEN
und dann als ID -1 übergeben.
Bei mir funktionieren Tabellen-, Generator- und Triggerdefinitionen:
SQL-Code:
CREATE TABLE TEXTVERWALTUNG
(
TEXTVERWALTUNGID Integer,
...
);
CREATE GENERATOR GEN_TEXTVERWALTUNGID;
SET TERM ^ ;
CREATE TRIGGER TR_TEXTVERWALTUNGID_BI FOR TEXTVERWALTUNG ACTIVE
BEFORE INSERT POSITION 0
AS BEGIN
if (NEW.TextverwaltungID is NULL) then NEW.TextverwaltungID = GEN_ID(gen_TextverwaltungID, 1);
END^
SET TERM ; ^