Delphi > FireDAC

FireDAC.Comp.Client.TFDTransaction.Options

(1/2) > >>

Stanislav Hruška:
Konkrétne:


* AutoStart
* AutoStopNenašiel som k tomu nikde žiadnu zmienku. Napíšete mi, že vysvetlenie je logické. Ibaže každá moja realizácia/vysvetlenie logického končí katastrofou :'(

* AutoStart  - to by malo zakaždým spustiť StartTransaction, ak  nie je spustená pri metódach ako Open, Exec...
* AutoStop  - tu vôbec netuším kedy sa to spustí a čo to urobí. Ktorú metódu to vlastne zavolá. Podľa všetkého to je naviazané na AutoCommit

pf1957:
http://docwiki.embarcadero.com/Libraries/Sydney/en/FireDAC.Stan.Option.TFDTxOptions.AutoCommit

Stanislav Hruška:
Dobrý odkaz! A v ňom informácia:
--- Citace ---Ak aplikácia volala metódu StartTransaction , potom bude automatická správa transakcií deaktivovaná, kým nezavolá zodpovedajúca metóda Commit alebo Rollback . Spravidla nie je potrebné nastavovať hodnotu vlastnosti AutoCommit na hodnotu False , jednoducho použite explicitný ovládací prvok transakcie ( StartTransaction , Commit alebo Rollback ), keď to potrebujete.
--- Konce citace ---

pf1957:

--- Citace: Stanislav Hruška  01-12-2020, 09:45:16 ---A v ňom informácia:
--- Citace ---Ak aplikácia volala metódu StartTransaction , potom bude automatická správa transakcií deaktivovaná, kým nezavolá zodpovedajúca metóda Commit alebo Rollback . Spravidla nie je potrebné nastavovať hodnotu vlastnosti AutoCommit na hodnotu False , jednoducho použite explicitný ovládací prvok transakcie ( StartTransaction , Commit alebo Rollback ), keď to potrebujete.
--- Konce citace ---

--- Konce citace ---
To je znama vlastnost, ale pomerne nebezpecna, protoze se muze lehce nejakemu "kutilovi" stat, ze necha vykonat sekvenci SQL prikazu, aniz by tu transakci nastartoval. A pak mu vsechno bude zdanlive fungovat, ovsem jen do doby, nez mu nejaka race condition rozm*da konzistenci DB resp. az se mu ta nekonzistence DB projevi... A pak je docela zabava hledat, co a kolik se toho nepovedlo a poskozenou DB opravovat...

Proto se v kodu ty transakce vytvareji/zahajuji/ukoncuji/rusi na jednom miste a ve factory na transakce se to zahajeni transakce nastavenim na false vynucuje.

Stanislav Hruška:
Hm, práve som ukončil opravu projektu. Ja som v tomto prípade jediný kutil :)
Od továrne som upustil. Lebo by som do nej nedostal správne StartTransaction - Commit - Rollback + ostatné príslušenstvo v jednotlivých objektoch. Niečo si mi nadhodil, ale...
Môžem urobiť jednu vec. V prípade potreby môžem:

* nahradiť Table.UpdateTransaction dočasnou transakciou
* urobiť čo treba
* vrátiť Table pôvodnú transakciu
* dočasnú transakciu zničiťTo by malo byť podľa mňa technicky čisté a bezpečné riešenie riešenie. Počítam s tým, že sa stane zázrak a niekto v tom projekte bude pokračovať. Tak nech má čo najmenej problémov.
.
Alebo to mám už ponechať tak ako to je?

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi