Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#10

AW: Firebird Autoincrement

  Alt 1. Dez 2016, 13:11
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 ; ^
  Mit Zitat antworten Zitat