Autor Téma: TFDQuery.ExecSQL - ako narába s transakciami?  (Přečteno 657 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5279
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
TFDQuery.ExecSQL - ako narába s transakciami?
« kdy: 18-12-2019, 09:21:23 »

Transakciu priraďujem dynamicky pri tvorbe Query. Vždy len jednu. Podľa textu nižšie.
Kód: [Vybrat]
//  A)  Tabuľky ostanú nedotknuté.
  Result.UpdateTransaction := dtmdBasic.fdtrFocUpdate;
//  B)  Výpočet vyúčtovania funguje len takto.
  Result.Transaction := dtmdBasic.fdtrFocUpdate;
.
//  Výpočet začínam takto:
  dtmdBasic.fdtrFocUpdate.StartTransaction;
    FqryInvNumSum.ExecSQL;
Myslel som si, že to je jedno. Nenarazil som na nič, čo by čosi o tom hovorilo. Už som s tým mal problém. Ale v inej súvislosti.
« Poslední změna: 18-12-2019, 09:26:57 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 2914
  • Karma: 135
    • Verze Delphi: D2007, XE3, DX10
Re:TFDQuery.ExecSQL - ako narába s transakciami?
« Odpověď #1 kdy: 18-12-2019, 10:17:50 »
Nenarazil som na nič, čo by čosi o tom hovorilo. Už som s tým mal problém. Ale v inej súvislosti.
Taky mam dojem, ze jsem ti to uz posilal http://docwiki.embarcadero.com/Libraries/Rio/en/FireDAC.Comp.Client.TFDQuery.UpdateTransaction. Tam bych rek, ze popisuji vsechno potrebne. Pro tebe asi ne, protoze tusim pouzivas FireBird, ale jinak velmi dulezita je ta poznamka, ze to UpdateTransaction podporuje jen FB, protoze jenom s FB muzes mit aktivnich vice transakci. Pokud to pouzijes na jiny RDBMS, tak se nejak za scenou sdili jedina transakce, coz zejmena v typickem schematu 1 trvale otevrena RO a RW vytvarena jen na dobu operace dokaze pekne zamotat hlavu. Kdyz jsme migrovaly projekt z FB na MSSQL tak jsme se tim (zejmena kolega) dost trapili.

Obecne neni zadny duvod, pouzivat UpdateTransaction, pokud nejsi na FB a nechces dany Query pouzivat v RO rezimu a jen na SQL prikaz UPDATE pouzit RW transakci. Kdyz neni prirazena, tak stejne pouzije Transaction
« Poslední změna: 18-12-2019, 10:19:44 od pf1957 »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5279
  • Karma: 41
    • Verze Delphi: W10 + Delphi 10.4 professional
Re:TFDQuery.ExecSQL - ako narába s transakciami?
« Odpověď #2 kdy: 18-12-2019, 12:32:25 »
Citace
ale jinak velmi dulezita je ta poznamka, ze to UpdateTransaction podporuje jen FB, protoze jenom s FB muzes mit aktivnich vice transakci.
Ďakujem za vysvetlenie. Vždy používam len jednu aktívnu transakciu.
V mojom prípade volám odhadom do 30 ExecSQL v rámci jednej transakcie.
Pri tabuľkách mám priradené obe transakcie (Update a Select) a nezaznamenal som žiaden problém.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.