Hallo Hansa,
wie schon gesagt: wenn Firebird meckert, dass es die Nr. 101 schon gibt, dann ist das so(!).
Wenn die Tabelle beim Start wirklich leer ist, dann kann das eig. nur daran liegen, dass
zwei Insert-Befehle mit der gleichen NR nacheinander abgesetzt werden. Am besten mal
in die MON$-Tabellen im Firebird schauen oder mit einem Trace-Tool (z.B. Thomas
Steinmaurer's
Fb Tracemanager) nachsehen, was *wirklich* im Server ankommt.
Nur so kannst Du irgendwelche "behind the scene magic" in FireDAC ausschliessen.
Hi Holger,
( lange nicht gesehen
)
ich stimme Dir in allen Punkten zu. Nur noch ein Hinweis dazu:
Wenn man mit der EXECUTE BLOCK-Methode arbeitet, sollte man trotzdem jeden Generatorwert per
"select gen_id..." aus der
DB holen. Es kamen schon mal Leute auf die Idee, die IDs Client-seitig
hochzuzählen und anschließend mit SET GENERATOR den Generator in der
DB auf den zuletzt
vergebenen Wert zu setzen, oder sich mit "select gen_id(genid,1000) from rdb$database"
mal eben 1000 Generatorwerte auf einen Schlag zu "reservieren".
Beides funktiniert aber nur, wenn man exklusiven Zugriff auf die
DB hat - sobald mehrere
User oder Programminstanzen an der
DB hängen, die das u.U. gleichzeitig machen können,
kann das furchtbar schiefgehen... immer dran denken, dass Generatoren außerhalb jeder
Transaktions-Kontrolle arbeiten!
lg, Frank