У меня вопрос о тестировании запросов в транзакции. Я уже давно использую транзакции 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 и обновлять ее и вставлять в эти таблицы и удалять их впоследствии (например, потому что таблицы могут быть очень большими). Разумеется, когда код переходит в производство, исправляется обработка ошибок (вместо того, чтобы просто печатать ошибку).
Какой лучший способ сделать такие вещи?