 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
pepys
Data înscrierii: 05/Mai/2005
Mesaje: 48
|
| Trimis: Vin Iun 16, 2006 3:09 pm Titlul subiectului: Tranzactii in PostgreSQL |
|
|
Vreau sa folosesc niste tranzactii la anumite comenzi. Ceva de genul:
Cod: BEGIN
UPDATE facturi SET valoare=540.46 WHERE id = '77'
COMMIT;
Legat de asta as avea 2 intrebari:
1. Ce functii de verificare a rezultatului as putea folosi aici, inainte de a face COMMIT? Asta pentru ca daca rezultatul e negativ, sa pot face ROLLBACK?
2. In fisierele PHP de obicei am ceva de genul
Cod: $query = "UPDATE tebel SET nume=....";
Cum pot sa fac acum sa includ mai multe operatiuni de executat? Tre sa fac ceva de genul urmator?
Cod: $query = "BEGIN";
$query = "UPDATE facturi SET valoare=540.46 WHERE id = '77'";
$query = "COMMIT";
Sau cum altfel ar trebui sa fac?
Multumesc..[/code] |
|
| Sus |
|
aurelian
Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti
|
| Trimis: Vin Iun 16, 2006 7:20 pm Titlul subiectului: |
|
|
| tranzactii cu Creole (vezi exemplu de jos). |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Vin Iun 16, 2006 8:15 pm Titlul subiectului: |
|
|
Nu stiu daca linia data e doar "exemplificativa", dar sa ma bati si nu pricep rolul unei tranzactii ce contine o singura instructiune (atomica).
Ca sa vezi daca e cazu' de rollback trebuie sa verifici rezultatul fiecarui query... ar tb. sa ai ceva de genul:
pg_query($conn, "BEGIN") or die('....');
$result = pg_query($conn, "query 1")
it (!$result) { //iesire... alte alea }
$result = pg_query($conn, "query 2")
it (!$result) { pg_query("ROLLBACK"); }
pg_query("COMMIT");
cam asa ceva... (nu prea fol. postgresql asa ca e posibil sa fi dat-o pe alaturi) |
|
| Sus |
|
pepys
Data înscrierii: 05/Mai/2005
Mesaje: 48
|
| Trimis: Lun Iun 19, 2006 4:53 pm Titlul subiectului: |
|
|
Am gasit niste posibile variabile la functie pg_result_status():
PGSQL_EMPTY_QUERY
PGSQL_COMMAND_OK
PGSQL_TUPLES_OK
PGSQL_COPY_OUT
PGSQL_COPY_IN
PGSQL_BAD_RESPONSE
PGSQL_NONFATAL_ERROR
PGSQL_FATAL_ERROR
PGSQL_STATUS_LONG
Stie cineva cum se folosesc?
Nu am reusit totusi sa testez in vre-un fel rezultatul unui query.. :) Mai are cineva idei? |
|
| Sus |
|
pepys
Data înscrierii: 05/Mai/2005
Mesaje: 48
|
| Trimis: Mar Iun 20, 2006 10:45 am Titlul subiectului: |
|
|
carco a scris: Nu stiu daca linia data e doar "exemplificativa", dar sa ma bati si nu pricep rolul unei tranzactii ce contine o singura instructiune (atomica).
Ca sa vezi daca e cazu' de rollback trebuie sa verifici rezultatul fiecarui query... ar tb. sa ai ceva de genul:
pg_query($conn, "BEGIN") or die('....');
$result = pg_query($conn, "query 1")
it (!$result) { //iesire... alte alea }
$result = pg_query($conn, "query 2")
it (!$result) { pg_query("ROLLBACK"); }
pg_query("COMMIT");
cam asa ceva... (nu prea fol. postgresql asa ca e posibil sa fi dat-o pe alaturi)
Poti sa-mi dai niste exemple mai concrete.. Ce anume pot sa verific din rezultatul unui query? Ce functii sunt pentru asta? 10x! |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|