Einzelnen Beitrag anzeigen

Frank Ingermann

Registriert seit: 4. Sep 2015
3 Beiträge
 
Delphi 10 Seattle Enterprise
 
#32

AW: FireDAC : Trigger geht nicht

  Alt 5. Sep 2015, 13:51
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
  Mit Zitat antworten Zitat