Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Autoincrement-Wert bei Firebird (https://www.delphipraxis.net/104044-autoincrement-wert-bei-firebird.html)

Opa Knack 26. Nov 2007 14:46

Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS

Autoincrement-Wert bei Firebird
 
Hallo,

irgendwie komme ich mal wieder nicht weiter. Ich kenne die autoincrement-Felder eigentlich nur von MySQL-Datenbanken, bei denen bei jedem Insert automatisch der autoinc-Wert erhöht wird. Soweit mich meine Suche jetzt nicht absolut in die Irre geführt hat, ist dies bei Firebird nicht so, so dass folgender Code im Endeffekt nicht funktionieren kann:

Delphi-Quellcode:
queryKategorien.SQL.Text :=
'INSERT INTO tabelle_kategorie_sub (KATEGORIE) ' +
' VALUES (' +
QuotedStr(Node.Text) + ');';
queryKategorien.ExecSQL;
(Zur Erläuterung: In der Tabelle gibt's neben dem Feld 'Kategorie' noch das Feld 'ID', welches automatisch erhört werden soll)

Leider kriege ich's aber anscheinend nicht in meine alternde Murmel, wie ich denn nun den ID-Wert erhöhen kann. Ich habe zwar viel von SP gelesen und verschiedene SQL-Statements gesehen, aber das hat alles nicht geklappt.

Hat jemand einen Tipp für mich?

Danke und Gruß
Opa

mkinzler 26. Nov 2007 14:48

Re: Autoincrement-Wert bei Firebird
 
Kombination Generator + Trigger. Welches Admintool nutzt du?

Opa Knack 26. Nov 2007 23:43

Re: Autoincrement-Wert bei Firebird
 
Hallo,

den EMS SQL Manager 2005. Die Generatoren habe ich angelegt, aber wie kann ich die auch nutzen?

Gruß
Opa

omata 26. Nov 2007 23:51

Re: Autoincrement-Wert bei Firebird
 
Hallo Opa Knack,

anlegen...
SQL-Code:
  CREATE GENERATOR GEN_name
initialisieren...
SQL-Code:
  SET GENERATOR GEN_name TO 0
ID erzeugen...
SQL-Code:
  INSERT INTO tabelle (id, bezeichnung)
  VALUES (gen_id(GEN_name, 1), 'Test')
Gruss
Thorsten

Opa Knack 27. Nov 2007 00:24

Re: Autoincrement-Wert bei Firebird
 
Hallo,

Super, klappt. Danke und gute Nacht

Gruß
Opa

mkinzler 27. Nov 2007 06:37

Re: Autoincrement-Wert bei Firebird
 
Man kann, wie schon erwähnt, auch einen Trigger verwenden, welcher dann die werte automatisch setzt:
SQL-Code:
SET TERM !! ;


CREATE TRIGGER <TABELLE>_BI FOR <TABELLE>
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(GEN_<TABELLE>_ID,1);
END
!!


SET TERM ; !!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz