Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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.

Předmět Autor Datum
Nepleť si pojmy databáze a tabulka. Databáze je jedna (klidně to může být adresář na disku) a obsahu…
Jan Fiala 31.01.2007 12:26
Jan Fiala
Ide o toto: delete from FAKTURA where ID = 5 delete from FAKTURA_POL where FAKTURA_ID = 5 Nemôže…
msx. 31.01.2007 14:03
msx.
Ja ti rozumim. Ale zalezi, jakou databazi pouzivas. MSSQL umi, dBase to neumi, Paradox t umi nejak o…
Jan Fiala 31.01.2007 16:19
Jan Fiala
Takže, ak sa jedná o Delphi BDE SQL Paradoxx, tak to pôjde, ak správne rozumiem. Ešte mám otázku: P…
msx. 01.02.2007 03:10
msx.
Slusny programátor by se v dnešní době nepouštěl do něčeho, postaveného na BDE a Paradoxu. Paradox n…
Jan Fiala 01.02.2007 07:46
Jan Fiala
Já sice nejsem žádný zkušený programátor, ale vím toho dost na to, abych dal ruce pryč jak od Parado…
Vladimir 01.02.2007 13:45
Vladimir
Plný souhlas s JaFi. Pro informaci doplňuji, že Paradox podporuje transaction isolation level pouze… poslední
Rce 01.02.2007 14:10
Rce

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.

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:

begin transaction
delete from FAKTURA where ID = 5
delete from FAKTURA_POL where FAKTURA_ID = 5
if @@Error <> 0
  rollback transaction
else
  commit transaction

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.

Zpět do poradny Odpovědět na původní otázku Nahoru