Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Transakcije u MS SQL

[es] :: MS SQL :: Transakcije u MS SQL

[ Pregleda: 3595 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-2609.sa.bih.net.ba.



+1 Profil

icon Transakcije u MS SQL21.06.2008. u 21:44 - pre 192 meseci
Moze li mi neko da mi kaze nesto vise o transakcijama? Naime radim u Delphiju neku "kasicu" (racuni i stavke) i sad ako korisnik krene pravit racun i doda neku stavku i zatvori formu da li bi moglo da se nastavi dodavanje tih stavki kasnije kad opet otvori formu (nastavak na racun) zahvaljujuci tim transakcijama?

Kako to radi? Evo mozete pogledati i ovo:

http://www.elitesecurity.org/t326950-Racuni-stavke

Moja tema ta...
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Transakcije u MS SQL23.06.2008. u 14:04 - pre 192 meseci
Savkic ti je lepo rekao:

započneš novu transakciju
dodaš novi slog u tabelu računa
dodaješ redom slogove u tabeli stavke računa koje se referenciraju na prethodno dodati račun
komituješ transakciju.

Transakcije je skup promena (INSERT/DELEET/UPDATE) koje si prosledio bazi podataka. Pseudo kod ide ovako otprilike:

BEGIN TRANSACTION
INSERT INTO Racuni (....) 'jedan red u tabelu Racuni, ti ga vidis, ostali kosrisnici uglavnom ga ne vide
INSERT INTO Stavke (...) 'jdan red u tabelu Stavke, ti ga vidis, ostali kosrisnici uglavnom ga ne vide
INSERT INTO Stavke (...) 'jdan red u tabelu Stavke, ti ga vidis, ostali kosrisnici uglavnom ga ne vide
INSERT INTO Stavke (...) 'jdan red u tabelu Stavke, ti ga vidis, ostali kosrisnici uglavnom ga ne vide
INSERT INTO Stavke (...) 'jdan red u tabelu Stavke, ti ga vidis, ostali kosrisnici uglavnom ga ne vide
IF <nema greske nigde>
COMMIT 'potvrdi promene, postaju vidljive svima
ELSE
ROLLBACK 'ponistavamo SVE promene, kao da se nista nije desilo
ENDIF

Sta se desava? Racun bez stavki nema smisla. Racun gde SVE stavke nisy unesene u bazu takodje nama smisla. Iz ovoga sledi da u bazu mora da se unese 1) jedan red za racun 2) svi redovi za sve stavke. Ako bilo gde nesto ne prodje, iz bilo kog razloga, cela stvar se mora obustaviti i ponistiti sve promene nastale pre moemnta greske (ROLLBACK). Ako nema greske, onda se sve COMMIT - ziasta zapise u abzu. Kad kazes BEGIN TARNSACTION, sistem pocne da upisuje promene u atbele, ali ih ne zavrsi. To ej kao kad u Accsu na primer mejas neki rekord, pa pre nego sto pritisnes ENTER ili SAve - sve je u tabeli, ali jos nije snimljeno. U slucaju RDBMS, malkice je drugacije. ne moze rekord u parent tabeli da 'ne buide snimljen' a da se pokusa unios u child tabelu. Sve se snimi, pa ko se izda COMMIT ono se sve izbrise. Dok imas otvorenu tarnsakciju, drugi korisnici promene uglavnom ne vide, dok ne izvrsis COMMIT.

Transakcije mogu da se zapocnu iz avrse u samom RDBMS, ali i razni ADO/DAO i slicno imaju mehanizam za otvaranje i zatvaranej transakcija.

 
Odgovor na temu

[es] :: MS SQL :: Transakcije u MS SQL

[ Pregleda: 3595 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.