MySQL: автоматический откат на сбое транзакции

Там какой-либо путь состоит в том, чтобы установить MySQL для откатывания какой-либо транзакции на первой ошибке/предупреждении автоматически?

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

(Я выполняю запросы от php, но я не хочу регистрироваться в php для отказа, поскольку он выполнил бы больше вызовов между mysql сервером и веб-сервером.)

Спасибо

1
задан marianboda 11 May 2010 в 06:05
поделиться

2 ответа

Я не знаю о такой возможности, но я также не вижу, как проверка на отказ будет означать больше вызовов:

try:
     <my code>
except:
     transaction.rollback()
     raise
else:
     transaction.commit()

-- это в Python/Django, но это должно быть прямо перенесено в PHP - и это занимает точно такое же количество кода, чтобы начать новую транзакцию, независимо от того, есть ли проблема (исключение) или нет.

1
ответ дан 3 September 2019 в 00:40
поделиться

Извините, вам нужно будет сделать это самостоятельно. Я не специалист по PHP, но я использую SQL: если вы создадите транзакцию и выполните несколько операций MySQL внутри транзакции, если вы откатите транзакцию, все будет отменено. ПРИМЕЧАНИЕ. Необходимо использовать механизм хранения транзакций, а функция автоматической фиксации должна быть отключена.

Если вас беспокоит только трафик координации транзакций, вы можете создать хранимую процедуру и просто вызвать ее.

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

1
ответ дан 3 September 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: