У меня вопрос о тестировании запросов в транзакции. Я использую транзакцию MySQL в течение некоторого времени, и каждый раз, когда я делаю это, я использую нечто вроде:Как проверить транзакции MySQL?
$doCommit = true;
$error = "";
mysql_query("BEGIN");
/* repeat this part with the different queries in the transaction
this often involves updating of and inserting in multiple tables */
$query = "SELECT, UPDATE, INSERT, etc";
$result = mysql_query($query);
if(!$result){
$error .= mysql_error() . " in " . $query . "<BR>";
$doCommit = false;
}
/* end of repeating part */
if($doCommit){
mysql_query("COMMIT");
} else {
echo $error;
mysql_query("ROLLBACK");
}
Теперь, часто бывает, что я хочу, чтобы проверить свою сделку, так что я изменить mysql_query("COMMIT");
к mysql_query("ROLLBACK");
, но я могу представить, что это не очень хороший способ проверить этот материал. Обычно не реально копировать каждую таблицу в temp_table и обновлять ее и вставлять в эти таблицы и удалять их впоследствии (например, потому что таблицы могут быть очень большими). Конечно, когда код переходит в производство, исправляется обработка ошибок (вместо того, чтобы просто печатать ошибку).
Каков наилучший способ сделать это?
О, боже мой ... Просто узнал, что PHP не поддерживает ничего, как 'finally' или' обеспечить'. –
Да, я знаю ... PHP отстой, и я использую его ... –
В настоящее время поддерживается 'finally', начиная с PHP 5.5 – Alex