Hi tizule,

> partea de tranzactii ti ofera posibilitatea de a face un calup de
> modificari in baza de date si sa fii sigur ca ori se fac toate, ori nu
> se face nici unul 

Da, exact asta ma intereseaza, dar nu pe toata baza de date, ci numai pe 
anumite tabele. In prezent toata baza de date este de tip MyISAM.

> ideea e ca afaik baza de date nu stie si nu face (si de fapt daca te
> gandesti bine nu e treaba ei) sa faca commit/rollback la o tranzactie in
> functie de erorile tale la query-uri; acest lucru trebuie sa-l faci tu,
> facand in caz de succes un commit pe la sfarsitul scriptului, sau un
> rollback in caz de eroare; 

Stii ce nu pricep eu? In documetatie ei spun asa:
By default, MySQL runs in autocommit mode. This means that as soon as you 
execute an update, MySQL will store the update on disk. (EU NU VREAU ASA CEVA)

If you are using transactions safe tables (like InnoDB) you can put MySQL 
into non-autocommit mode with the following command:
SET AUTOCOMMIT=0

DA, ASTA IMI PLACE. Deci eu cind o sa rulez scriptul trebuie sa pun 
AUTOCOMMIT=0, corect?

After this you must use COMMIT to store your changes to disk or ROLLBACK if 
you want to ignore the changes you have made since the beginning of your 
transaction.
...
START TRANSACTION was added to MySQL 4.0.11; This is the recommended way to 
start an ad-hoc transaction as this is SQL-99 syntax. 

DA EXACT ASTA VREAU: AD-HOC TRANSATION.

Intrebare:
cum pot sa fiu sigur ca in cazul unui insert sau un update nereusit, se face 
ROLLBACK la toate modificarile?

Ar fi corect sa fac ceva de genul:

mysql_query('SET AUTOCOMMIT=0');
mysql_query('START TRANSACTION');

#va rog sa ma corectati daca sintaxa de mai sus nu este corecta

while (conditia mea)
{
$insert = 'INSERT INTO table1 ... VALUES niste valori ...';
$result = mysql_query($insert1);
if ($result != true)
        {
        mysql_query('ROLLBACK');
        break;
        }
}

mysql_query('COMMIT');

mysql_query('SET AUTOCOMMIT=1');

Regards,
Alex




--- 
Detalii despre listele noastre de mail: http://www.lug.ro/


Raspunde prin e-mail lui