BEGIN & COMMIT & ROLLBACK & AUTOCOMMIT

Name

Новичок
BEGIN & COMMIT & ROLLBACK & AUTOCOMMIT

mysql_query('SET AUTOCOMMIT=1') or die (db_error()); // just for test, to be sure AUTOCOMMIT=1
mysql_query('BEGIN') or die (db_error());

$sql = "INSERT INTO ...";
$result = mysql_query($sql) or die (db_error($sql));

$sql = "INSERT INTO ...";
$result = mysql_query($sql) or die (db_error($sql));

$sql = "INSERT INTO ...";
$result = mysql_query($sql) or die (db_error($sql));

mysql_query('COMMIT');


Я так понимаю если начался "BEGIN"
то никаких изменинений сделано не будет до тех пор пока не вызовем "COMMIT"
и "ROLLBACK" не нужен совсем и AUTOCOMMIT по барабану.

Если ошибка то die() и "COMMIT" не выполняется и все OK.

Во всяком случае у меня даный пример работает.


Правильно ли так делать?
 

Demiurg

Guest
мне кажется лучше
if(!($result = mysql_query($sql)) || mysql_error() != '')
{
// сообщаем пользователю об ошибке
mysql_query('rollback');
}

хотя mysql_error больше относится к синтаксису запроса.
 

Name

Новичок
Все время писал:
$result = mysql_query($sql) or die (db_error($sql));

без if и так далее
просто die('сообщаем пользователю об ошибке');

lда и попороще так, вызвал BEGIN потом COMMIT
и недо париться с if ...
 
Сверху