![]() |
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. |
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; |
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:
Trotzdem passiert nix.
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 ; ^ |
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: |
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. |
Re: Firebird und Autoincrement
Ah comprende
thx :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 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