- Používam DB komponenty
- K nim DataSource -> Table.
Mozna je to tim, ze jsem nikdy Table k nicemu nepouzil, ale moje predstava o tom siditku je takova, ze je to potomek
TDataset, kteremu se zada
TableName a ono si na
Open() vygeneruje select a podle nastaveni options nacte nejake zaznamy z dane DB tabulky. A kdyz se tomu meni obsah, tak se zmena potvrzuje volanim
Post(), ktere automaticky vygeneruje insert/update/delete SQL command a vykona ho (tohle neplati pro
CachedUpdates).
Ale mohu se mylit. Ovsem je-li moje predstava v principu spravna, tak nechapu, proc chces manualne ridit transakci, ve ktere se meni obsah jedne DB tabulky, protoze v jeden cas menis jeden record a to se ti bud povede nebo ne, a to si osetris. Na to z transakcniho hlediska zadnou transakci nepotrebujes => staci ti
AutoCommit=true.
Pro vsechny ostatni pripady, kdy je zmena obsahu DB realizovana vice nez jednim SQL prikazem, potrebujes
explicitne (manualne) rizenou transakci, ale tu je vhodne s nicim nesdilet tj. nema co delat na DataModulu a vytvari/startuje/ukoncuje/rusi se, jak jsem ti naznacoval naposledy vcera.
DataModul obsahuje
- FDConnection
- TransactionTableAuto: AutoCommit, ReadOnly = True
- TransactionTableManually: AutoCommit, ReadOnly = False
S ohledem na vyse napsane my tohle nedava smysl a pro Interbase/Firebird bych udelal v DataModulu:
- FDConnection
- ReadOnlyTransaction: AutoCommit = False, ReadOnly = True
- ReadWriteTransaction: AutoCommit = true, ReadOnly = False
A
ReadOnlyTransaction bych po uspesnem pripojeni
FDConnection na server
zahajil a nechal aktivni,
pred odpojenim se od serveru bych ji
rollnul back.
FDConnection:
- .Transaction := TransactionTableAuto;
- .UpdateTransaction := TransactionTableManually;
Tohle by bylo v zasade spravne stejne jako predavani pouze
FDConnection do tabulky, jen ty transakce zmenit/prejmenovat podle vyse uvedeneho.
U ostatnich query zapomenout na property
UpdateTransaction aj. bud pouzivat pro property
Transaction mistne rizenou transakci, nebo ji nechat nil podobne jako u tabulky (vezmou se transakce z FDConnection).