Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird und Autoincrement (https://www.delphipraxis.net/42131-firebird-und-autoincrement.html)

buyden 14. Mär 2005 12:58

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

Firebird und Autoincrement
 
Hi

ich versuch schon seit ner ganzen weile meine Firebird Datenbank dazu zu bekommen, meinem ID-Feld automatisch nen Wert zuzuweisen. Ich hab also unter dem ID-Feld nen Generator erzeugt, den mir Firebird anbietet aber trotzdem bekommt der Primärschlüssel beim Post keinen Wert zugewiesen, was natürlich zu einem Fehler führt.
Also wie weist man einem Feld unter Firebird einen Autoincrement-Wert zu??

Ich arbeite mit IBExpress und IBOConsole.

Robert_G 14. Mär 2005 13:07

Re: Firebird und Autoincrement
 
Hihi, ein Gegnerator ist doch nur ein Objekt, bei dem du dir immer einen Wert abholen kannst.
Dabei wird der Zähler um eins erhöht.
Damit das ganze, trotz not null constraint, funktioniert brauchst du einen "before insert" trigger.
Bleistift:
SQL-Code:
create trigger DeinTriggerName
   for DeineTabelle active
   before INSERT position 0 as
begin
   if (New.DeinPk is null) then
      New.DeinPk = gen_id(DeinGenerator, 1);
end;

buyden 14. Mär 2005 14:51

Re: Firebird und Autoincrement
 
genau das hab ich auch schon probiert aber trotzdem bekomme ich den Fehler, wenn ich bei IBExpert keine ID für den neuen Datensatz manuell eintrage und speichere

Den folgenden code hat IBExpert selbst generiert:
Delphi-Quellcode:
SET SQL DIALECT 3;

SET NAMES NONE;

CREATE GENERATOR GEN_AUFTRAG_ID;

SET TERM ^ ;




CREATE TRIGGER AUFTRAG_BI FOR AUFTRAG
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.AWERT IS NULL) THEN
    NEW.AWERT = GEN_ID(GEN_AUFTRAG_ID,1);
END
^


SET TERM ; ^
Trotzdem passiert nix.

buyden 14. Mär 2005 15:01

Re: Firebird und Autoincrement
 
ich hab das Ganze jetzt nochmal in meinem Programm probiert, ich habe nen neuen Datensatz angelegt und gepostet, ohne Fehlermeldung, allerdings ist das Feld Awert auch leer :gruebel:
...strange

Im IBExpert sind die Datensätze dann durchnummeriert - wie gesagt
...strange :freak:

Stevie 14. Mär 2005 15:09

Re: Firebird und Autoincrement
 
Ja, das ist klar, da der Wert in der Datenbank generiert wird, ist er bei dir nicht vorhanden.
Also musst du für ein Refresh des Satzes bzw. ID-Felds nach dem Post sorgen.

buyden 14. Mär 2005 15:11

Re: Firebird und Autoincrement
 
Ah comprende

thx :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 Uhr.

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