Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: 'Merken' des Primary Key nach Posten

  Alt 9. Feb 2006, 08:08
Hallo.

Leider befindet sich der vom RDBMS vergebene Schlüssel nach einem Insert nicht im record buffer des Programms. Deshalb hat sich eine andere Vorgehensweise durchgesetzt. Der Generator ist ja schon da:

CREATE GENERATOR "GEN_TBL"; Man definiert einen before insert trigger für die Tabelle:

SQL-Code:
CREATE TRIGGER "TBL_BI0" FOR "TBL"
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.id = 0) THEN
    NEW.id = GEN_ID(GEN_TBL, 1);
END
Auf diese Weise wird immer ein konsistenter primary key sicher gestellt. In der Anwendung besorgt man sich dann den nächsten Generator-Wert:

SELECT GEN_ID(GEN_TBL, 1) FROM RDB$DATABASE Den verwendet man dann auch für die foreign keys. Wenn man transaktionsgeschützt arbeitet, dann kann man sich den Schlüssel auch direkt nach der Verwendung besorgen:

SELECT GEN_ID(GEN_TBL, 0) FROM RDB$DATABASE Grüße vom marabu
  Mit Zitat antworten Zitat