IBDataset und Autoincrement

17/12/2012 - 08:08 von Alfred Gemsa | Report spam
Hallo,

in einer Tabelle gibt's ein Feld ID, dass über einen Generator und ein
Before_Insert-Trigger hochgezàhlt werden soll.

Das IBDataset hat diesbezüglich eine Eigenschaft "GeneratorField", die
auf den Generator, den Feldnamen und "Anwenden bei neuem Datensatz"
gesetzt ist.

Dummerweise zàhlt ID aber jeweils um Zwei hoch, wenn ich mittels
Dataset.Append einen Record dranhànge.

Was mache ich falsch?

Alfred.
 

Lesen sie die antworten

#1 Achim Kalwa
17/12/2012 - 13:09 | Warnen spam
Hallo,

Alfred Gemsa wrote:

in einer Tabelle gibt's ein Feld ID, dass über einen Generator und ein
Before_Insert-Trigger hochgezàhlt werden soll.

Das IBDataset hat diesbezüglich eine Eigenschaft "GeneratorField", die
auf den Generator, den Feldnamen und "Anwenden bei neuem Datensatz"
gesetzt ist.

Dummerweise zàhlt ID aber jeweils um Zwei hoch, wenn ich mittels
Dataset.Append einen Record dranhànge.

Was mache ich falsch?



Ich kenne zwar IBDataset nicht im Detail, aber das sieht mir so aus als
würde IBDataset sich selber um die Vergabe einer neuen ID kümmern. Dabei
wird der Generator zum ersten Mal inkrementiert. Dein Trigger macht dann
das gleiche noch einmal.

Zeig' doch mal den Code vom Trigger.
Evtl. kannst Du den so umbauen, dass der nur dann Generator angesprochen
wird, wenn ID noch keinen Wert hat:

create trigger TBI_KUNDE for KUNDE before insert
position 0 as
begin
if (new.ID IS NULL) then new.ID = GEN_ID(G_ID, 1);
end

(G_ID ist der Generator)

HTH
Achim

Ähnliche fragen