-
32 Lecții Delphi
Lecția 24: Tranzacții Gestionarea
Toate operațiunile sunt efectuate cu datele de pe serverul SQL, apar în contextul tranzacției. Tranzacție - este o operație de grup, adică un set de acțiuni într-o bază de date; cel mai important dintre aceste acțiuni este, de obicei, fie toate sau nici unul din asta. Dacă în timpul executării unui anumit set de acțiuni, la un moment dat, este imposibil să se producă o altă acțiune, este necesar să se efectueze revenirea bazei de date la starea inițială (rostogolească înapoi tranzacția). Astfel, (cu operațiunile de planificare corespunzătoare), cu condiția ca integritatea bazei de date. Această lecție explică modul de a începe, gestiona și finaliza tranzacția prin utilizarea instrucțiunilor SQL. Și, de asemenea, discută despre utilizarea tranzacțiilor în aplicații create în Delphi. Toate informațiile prezentate se referă la Interbase.
Pentru gestiunea tranzacțiilor, există trei expresii:
SET TRANSACTION - Începe o tranzacție și determină comportamentul acestuia.
Salvează modificările angaja- efectuate de tranzacție în baza de date și finalizează tranzacția.
Retroactivitatea - Revocă modificările efectuate de tranzacție și finalizează tranzacția.
TRANZACȚII SET [Mod de acces] [Lock Rezoluție]
[Level Izolarea] [Tabelul Rezervare]
Valorile luate în mod implicit.
TRANZACȚIE SET CITIȚI CU SCRIERE WAIT NIVEL IZOLARE SNAPSHOT
SET TRANSACTION CITEȘTE SCRIERE
tranzacție Explicit - o tranzacție inițiată și completată prin obiect metode DataBase: StartTransaction, Commit, revocați. După începerea unei tranzacții explicite, toate modificările făcute la datele referitoare la această tranzacție.
Alt mod de a începe o tranzacție explicită, mai degrabă decât cu ajutorul unei baze de date. nr. (Mai precis, este posibil, dar ar necesita utilizarea API funcții Interbase. Cu toate acestea, este deja destul de programare de nivel scăzut.) Astfel, într-un singur compus nu poate începe două tranzacții.
tranzacție implicită începe cu modificarea datelor, în cazul în care în acest moment nu există nici o tranzacție explicită. tranzacție implicită apare, de exemplu, atunci când se efectuează metoda de post pentru masă și de interogare obiecte. Asta este, dacă modificați o intrare în DBGrid și pentru a trece la un alt record, aceasta atrage după sine efectuarea de post. care, la rândul său, duce la partea de sus a unei tranzacții de date implicite, în cadrul unei tranzacții și actualizarea finalizarea acestuia. Foarte important, tranzacția implicită a început prin utilizarea metodei Post, Ștergere, Inserare, Append, etc. Se termină în mod automat.
Pentru modificarea datelor pot fi utilizate passthrough SQL- SQL- expresie realizată prin metoda TQuery ExecSQL clasă. Modificările aduse prin passthrough SQL, de asemenea, conduce la începutul tranzacției implicite. Comportamentul ulterior al tranzacțiilor, care a început în acest mod, definit SQLPASSTHRU valoarea parametrului MODE pentru baza de date alias (sau același parametru în comunicarea -ve obiect DataBase Params). Acest parametru poate lua trei valori.- SHARED AUTOCOMMIT - cuvânt PARTAJAT indică faptul că ambele tipuri de tranzacții (prin Passthrough SQL și prin metode TTable și TQuery) împart aceeași conexiune la baza de date. AUTOCOMMIT cuvânt indică faptul că tranzacția implicită, inițiată prin intermediul Passthrough SQL. este finalizată după acțiunea de modificare a datelor (efectuate automat COMMIT).
- SHARED NOAUTOCOMMIT - diferă de cea anterioară prin aceea că tranzacția implicită, inițiată prin intermediul Passthrough SQL. nu se termină după ce face, acesta trebuie să fie în mod evident, completat prin executarea expresiei SQL- „commit“.
- NU SHARED - tranzacții de diferite tipuri operează printr-o altă conexiune la baza de date. Această valoare include, de asemenea, NOAUTOCOMMIT. Asta este tot PassthroughSQL implicită -tranzaktsii trebuie să completeze în mod clar - efectuarea de expresie SQL- „commit“ pentru Passtrough SQL.
În primul caz, în cazul în care tranzacția nu a lansat în prezent, metodele de a încerca modificarea TTable de date sau TQuery. precum și prin punerea în aplicare a Passtrough SQL orice operațiune va conduce la începutul tranzacției implicite. Odată finalizat, această tranzacție va fi finalizată în mod automat (cu excepția cazului a apărut o eroare în timpul tranzacției). Dacă deja au început în mod explicit (metoda obiect StartTransaction database) tranzacție, modificările vor avea loc în contextul său. Toate tranzacțiile folosesc unul și același compus.
În al doilea caz, totul se întâmplă la fel ca în primul. Diferența este că tranzacția PassthroughSQL- implicită nu este finalizată până când comanda „commit“ nu este executat.
În al treilea caz, atunci când passthrough comenzile SQL. Este stabilit o altă conexiune, și acțiuni implicite de tranzacții inițiate efectuate cu privire la modificarea datelor. Tranzacția nu va fi finalizată până la comanda „commit“ va fi efectuată. Disponibilitatea tranzacțiilor, a început în mod explicit cu DataBase nu va afecta progresul PassthroughSQL- tranzacția. PassthroughSQL- până când tranzacția este finalizată, modificările aduse nu va fi văzut în tabel și interogare obiectelor. de lucru prin intermediul altei conexiuni. PassthroughSQL- tranzacția poate fi considerată într-un sens ca o tranzacție dintr-o altă aplicație.
Interacțiunea dintre tranzacțiile de acest program cu tranzacții de la alte aplicații este determinată de proprietățile DataBase obiectului TransIsolation. Pentru Interbase are două semnificații semnificație: tiReadCommitted și tiRepeatableRead. Metoda de execuție StartTransaction în aceste două cazuri, este echivalent cu -vyrazheny SQL, respectiv.
TRANZACȚII SET Citire ASTEPTARE IZOLARE NIVEL READ SĂVÂRȘITE
TRANZACȚIE SET CITIȚI CU SCRIERE WAIT NIVEL IZOLARE SNAPSHOT