Как обрабатывать транзакции в базе данных Mysql. Когда моя база данных прерывается? - PullRequest
0 голосов
/ 12 мая 2010

В моей хранимой процедуре выполняется 10 запросов.

В случае, если после выполнения 5-го запроса моя база данных будет прервана и выполнение прервано.

Мой первый запрос 5 обновлен в базе данных. Так что мне нужно откатить выполнение всех 5 запросов.

Как решить такие проблемы?

Ответы [ 2 ]

2 голосов
/ 12 мая 2010

Тип таблицы MySQL по умолчанию - MyISAM, который не поддерживает транзакции.К счастью, есть еще одна таблица типа InnoDB, которая поддерживает транзакции.Преобразовать тип таблицы достаточно просто:

http://dev.mysql.com/doc/refman/5.0/en/converting-tables-to-innodb.html

И при выполнении запросов сделайте это:

START TRANSACTION

// do whatever queries you want to

// if there are no errors
COMMIT

// if there are errors
ROLLBACK

После отката ваш БД вернется в состояниеэто было в точке, которую вы назвали START TRANSACTION.Этот учебник должен помочь немного больше:

http://www.devshed.com/c/a/MySQL/Using-Transactions-In-MySQL-Part-1/

Примечание: Вы не можете использовать запросы FULLTEXT с таблицами InnoDB.

1 голос
/ 12 мая 2010

Использовать транзакции InnoDB. НАЧАТЬ СДЕЛКУ ... КОМИТЕТ. См. документ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...