ran
Новичок
Реализация транзакций
Здравствуйте, возникла вопрос по транзакциям.
Если выполнить SET AUTOCOMMIT=1, то перед insert/update запросами нет необходимости выполянять START TRANSACTION, а после COMMIT/ROLLBACK.
Или все же лучше самому контролировать этот процесс так:
Просто еще подумал о том, что в транзакцию может входить несколько запросов, и если один из них не выполнился, то необходимо откатить результаты выполнения предущих, а с SET AUTOCOMMIT=1 это не получится.
Получается, что для пакетной реализации транзакций необходим свой какой-то модуль или класс, который будет управлять транзакциями?
Или я неправильно понял использование транзакций в MySql?
-~{}~ 21.12.06 09:39:
Этот вопрос решен, создал отдельный класс, с помощью которого управляю транзакциями (по умолчанию в транзакцию входит каждый INSERT/UPDATE запрос). Но один раз возникла ошибка :
1213(ER_LOCK_DEADLOCK)
Message: Deadlock found when trying to get lock; try restarting transaction.
Получается, что поступило несколько запросов на изменение одной записи, и время ожидания завершения транзакции у одного из них истекло.
Не могу сообразить, как поступать, если такая ошибка будет повторяться?
Заранее спасибо.
Здравствуйте, возникла вопрос по транзакциям.
Если выполнить SET AUTOCOMMIT=1, то перед insert/update запросами нет необходимости выполянять START TRANSACTION, а после COMMIT/ROLLBACK.
Или все же лучше самому контролировать этот процесс так:
PHP:
try{
$db->query("SET AUTOCOMMIT=0");
$db->query("START TRANSACTION");
$db->query($userQuery);
$db->query("COMMIT");
}
catch (exception $e){
$db->query("ROLLBACK");
throw new CDatabaseException($e->getMessage());
}
Получается, что для пакетной реализации транзакций необходим свой какой-то модуль или класс, который будет управлять транзакциями?
Или я неправильно понял использование транзакций в MySql?

-~{}~ 21.12.06 09:39:
Этот вопрос решен, создал отдельный класс, с помощью которого управляю транзакциями (по умолчанию в транзакцию входит каждый INSERT/UPDATE запрос). Но один раз возникла ошибка :
1213(ER_LOCK_DEADLOCK)
Message: Deadlock found when trying to get lock; try restarting transaction.
Получается, что поступило несколько запросов на изменение одной записи, и время ожидания завершения транзакции у одного из них истекло.
Не могу сообразить, как поступать, если такая ошибка будет повторяться?
Заранее спасибо.