如何在wordpress中使用mysql事务?我要删除 10 个孩子,如果有一个是活动的,则全部删除将回滚。
user2273344
问问题
19861 次
1 回答
32
我从来没有尝试过,没有什么特别的,但它只是运行一个查询,比如(运行你的查询START TRANSACTION
并使用COMMIT
或ROLLBACK
取决于结果):
mysql_query('START TRANSACTION');
$res1 = mysql_query('query1');
$res2 = mysql_query('query2');
If ( $res1 && $res2 ) {
mysql_query('COMMIT'); // commits all queries
} else {
mysql_query('ROLLBACK'); // rollbacks everything
}
因此,它可以转换为 wordpress,使用类似这样的东西
$wpdb->query('START TRANSACTION');
$result1 = $wpdb->delete( $table, $where, $where_format = null );
$resul2 = $wpdb->delete( $table, $where, $where_format = null );
if($result1 && $result2) {
$wpdb->query('COMMIT'); // if you come here then well done
}
else {
$wpdb->query('ROLLBACK'); // // something went wrong, Rollback
}
您也可以使用try catch
这样的答案,(不是 WordPress,而是相同的想法)。您可以在Codex上阅读有关$wpdb
查询功能(query
和delete
)的更多信息。
MySQL 的默认 MyISAM 存储引擎不支持事务,所以它不是一个选项。如果要使用事务,请确保所有表都定义为 InnoDB。
于 2013-10-03T08:26:27.823 回答