Delphi BDE SQL - Je možnosť pracovať s transakciami?
Ide mi o to, že budem mať viac databáz, v ktorých musím urobiť zmeny. Ak sa nedokončí operácia, čiže neurobia sa zmeny vo všetkých databázach, tak by sa malo všetko vrátiť do poriadku. Je taká možnosť alebo môžem o tom v Delphi iba snívať? Predišiel by som tak mnohým problémom pri programovaní a nemusel by som ošetrovať platnosť údajov v databázi.
Nepleť si pojmy databáze a tabulka. Databáze je jedna (klidně to může být adresář na disku) a obsahuje jednu nebo více tabulek. Ty pracuješ s tabulkami.
Transakce jsou vždy věcí databáze - musí je podporovat. Například dBase žádné transakce nezná, takže je ani nemůžeš použít.
Ide o toto:
Nemôže sa vykonať len jedno, ale obidve naraz, ako to zaradiť do jednej transakcie, ktorá sa v prípade neúspechu vráti späť?
Ja ti rozumim. Ale zalezi, jakou databazi pouzivas. MSSQL umi, dBase to neumi, Paradox t umi nejak omezene...
Funguje to tak, ze zahajis transakci, provedes prikazy, potvrdis transakci pokud nedoslo k chybe, jinak odvolas transakci.
Priklad pro MS SQL:
Takže, ak sa jedná o Delphi BDE SQL Paradoxx, tak to pôjde, ak správne rozumiem.
Ešte mám otázku:
Povedzme, že vykoná sa prvý príkaz (výmaz z FAKTURA, čiže druhý riadok), potom vypadne napájanie. Zapnem počítač, spustím program. Opraví sa mi databáza alebo nie? Ak nie, tak tá transakcia bola zbytočná. O toto sa mi jedná. Asi bude dobré, keď ten program dokončím urobiť aj ručne spustiteľný test na integritu databázy. Ako to teda riešiť? Alebo lepšia otázka, ako by to robil skúsený programátor?
Slusny programátor by se v dnešní době nepouštěl do něčeho, postaveného na BDE a Paradoxu.
Paradox nemá žádný vlastní engine, nevím, jestli obsahuje transakce.
Při výpadku připojení budeš mít narušené tabulky, protože není nic, co by se o integritu tabulek a databáze staralo.
Na to potřebuješ nějaký normální SQL server.
Já sice nejsem žádný zkušený programátor, ale vím toho dost na to, abych dal ruce pryč jak od Paradoxu, tak BDE. To jsou mnoho let zastaralé a překonané věci; docela dlouho tu máme ADO a snadu stavět něco na BDE nechápu.
k původní otázce, jak už tu zaznělo tak co se týče transakcí, tak to je vlastnost databázového stroje, ne BDE nebo ADO.
Plný souhlas s JaFi. Pro informaci doplňuji, že Paradox podporuje transaction isolation level pouze DIRTYREAD, což je celkem na prd...