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