SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.12.2010 17:43:59

hash
Участник
Зарегистрирован: 14.12.2010
Сообщений: 1

Тразакции. Зачем нужен Rollback?

Доброго времени суток!

Если смысл транзакции в том, что если её на закоммитить, то изменения в базу не попадут, так зачем её откатывать в случае ошибки скрипта?
Например функция начинает тразакцию. Возникает ошибка, которая дальше не позволяет работать. Можно ли просто завершить выполнение функции без отката транзакции, и чем это чревато?

Неактивен

 

#2 15.12.2010 19:03:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Тразакции. Зачем нужен Rollback?

Что-то я запутался в Вашем вопросе smile Если Вы имеете в виду хранимую функцию,
то она не может начать транзакцию. Если Вы имеете в виду функцию в смысле кли-
ентского приложения, то Вы можете, например, закрыть соединение — транзакция
откатится самостоятельно. Если Вы имеете в виду хранимую процедуру, то нужно
относиться к ней как к просто фиксированной последовательности команд — так,
как если бы Вы набирали все эти команды последовательно.

MySQL должен знать, когда транзакция началась, и когда она заканчивается явно.
При возникновении ошибок Вы не обязательно должны сразу же откатывать тран-
закцию. В разных ситуациях могут быть разные решения. Даже в рамках одной
транзакции Вы можете предпочесть, например, откатиться на момент
точки сохранения. Просто завершить такую процедуру можно, но у Вас останется открытой
транзакция, то есть другие потоки не увидят эти изменения, другие возможные тран-
закции в этом соединении, возможно, будут конфликтовать, и т.п.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson