Citat:
VladaSu:
@nesh
Kako? Moze li simple primer koda?
Prilično sam siguran da se to ne može rešiti transakcijama. One imaju drugu svrhu. Npr:
Hoćeš da updateuješ tabelu A i onda u tabelu B da uneseš, npr. informaciju da si updateovao nešto. Ako uradiš čisto (presudocod):
Code:
1) mysql_query(UPDATE a SET x = 1 WHERE id = N)
2) mysql_query(INSERT INTO b (poruka) VALUE (N je updateovan))
Ovo pod 2) će se izvršiti čak i ako ovo pod 1) nije uspelo. Ako je ovo pod 1) uspelo, onda će postojati trenutak u vremenu kada će tabela A biti ažurirana, ali tabela B neće.
Onda to rešiš sa (opet pseudokod)
Code:
mysql_query(START TRANSACTION)
mysql_query(UPDATE a SET x = 1 WHERE id = N)
mysql_query(INSERT INTO b (poruka) VALUE (N je updateovan))
if (mysql_affected_rows()) { // Vrati 1, tj. TRUE ako je prethodan query nešto uspeo
mysql_query(COMMIT)
} else {
mysql_query(ROLLBACK)
}
Kada uradiš COMMIT, OBA querya će biti sačuvani u bazi. Kada uradiš ROLLBACK, kao da se ništa nije desilo...
Dakle, neprimenjivo za zadati problem :)