Forum Delphi.cz

Delphi => FireDAC => Téma založeno: Stanislav Hruška 30-11-2020, 13:49:42

Název: FireDAC.Comp.Client.TFDTransaction.Options
Přispěvatel: Stanislav Hruška 30-11-2020, 13:49:42
Konkrétne:

Nenaš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 :'(
Název: Re:FireDAC.Comp.Client.TFDTransaction.Options
Přispěvatel: pf1957 01-12-2020, 08:34:15
http://docwiki.embarcadero.com/Libraries/Sydney/en/FireDAC.Stan.Option.TFDTxOptions.AutoCommit (http://docwiki.embarcadero.com/Libraries/Sydney/en/FireDAC.Stan.Option.TFDTxOptions.AutoCommit)
Název: Re:FireDAC.Comp.Client.TFDTransaction.Options
Přispěvatel: Stanislav Hruška 01-12-2020, 09:45:16
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.
Název: Re:FireDAC.Comp.Client.TFDTransaction.Options
Přispěvatel: pf1957 01-12-2020, 16:34:05
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.
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.
Název: Re:FireDAC.Comp.Client.TFDTransaction.Options
Přispěvatel: Stanislav Hruška 01-12-2020, 19:48:16
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:
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?
Název: Re:FireDAC.Comp.Client.TFDTransaction.Options
Přispěvatel: pf1957 02-12-2020, 07:12:02
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
Factory je jen "vyspelejsi" alternativa k volani konstruktoru objektu. Ja uz bych to uzavrel, protoze to je porad dokola...