![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: IBExpert / Fibplus
Selbstinkrementiertes Feld in Firebird zählt falsch hoch.
Hallo,
ich habe unter Firebird ein Feld das automatisch durch einen Generator hochgezählt wird. Wenn ich nun Datensätze eingebe unter IBExpert, so wird das Feld auch ohne Probleme hochgezählt. In meinem Test-Programm wo ich die Eingabe mit einem DBStringGrid und mit einem DBNavigator realisiere, wird das Feld um 2 hochgezählt. IBExpert; 1,2,3,4 usw. Delphi-Prg.:1,3,5 usw. Woran kann das liegen? Bis bald Chemiker |
Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch
Wird der PK clientseitig gefüllt? Wird ein trigger verwendet? Wenn ja, wie sieht dieser aus?
|
Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch
Hallo mkinzler,
was ist ein PK? Es wird ein Tigger verwendet:
SQL-Code:
Bis bald Chemiker
CREATE OR ALTER TRIGGER SET_MW_ID FOR MW_TABELLE
ACTIVE BEFORE INSERT POSITION 0 AS begin if (new.mw_id is null) then new.mw_id = gen_id(mw_id_gen, 1); end |
Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch
PK ist der primary key. Üblicherweise wird dort ein autoinc Feld verwendet.
|
Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch
Hallo MrSpock,
dank für die Übersetzung. Ja, es wird ein PK für das Feld verwendet.
SQL-Code:
Bis bald Chemiker
ALTER TABLE MW_TABELLE ADD CONSTRAINT PK_MW_TABELLE PRIMARY KEY (MW_ID);
|
Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch
Wird das Feld vom Client gesetzt? Wird zusätzlich eine clientseitiges autoinc verwendet? (über Komponente)
|
Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch
Was mkinzler knapp andeuten will : in FIBplus ist wohl bei den AutoUpdateOptions ein Generatorname hinterlegt. Dort könnte man auch den GeneratorStep auf 5 einstellen und der Wert würde (je nach Trigger) gleich um 6 hochgezählt. Warum ? Der Trigger zählt wohl sowieso um eins hoch und übergibt den Wert an das Programm. Dieses macht den Rest. Das ist einfach nur doppelt gemoppelt. :mrgreen:
|
Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch
Hallo mkinzler,
mir nicht bekannt. Ich habe nur die Komponenten so eingestellt das ich die Eingabe mit dem DBGrid und dem DBNavigator testen kann. Bis bald Chemiker |
Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch
Hallo hansa,
im FIBDataset steht: AutoReWriteSqls= True Generatorname= GEN_MW_TABELLE_ID GeneratorStep=1 Kommt es deshalb zu der unterschiedlichen Zählweise? Bis bald Chemiker |
Re: Selbstinkrementiertes Feld in Firebird zählt falsch hoch
Sieht so aus. Siehe Vorposting. Nicht getestet, aber logisch. :shock: Setze doch testweise den Generatorstep wirklich auf 5 und gucke mal, was da rauskommt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 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 by Thomas Breitkreuz