我是 PDO 事务的新手,遇到以下情况:我想从两个单独的表中删除,并规定如果任一删除失败,则两者都不应该发生。这似乎是交易的理想场景。我尝试了以下方法:
$db->beginTransaction();
try {
$db->exec( "DELETE FROM table1 WHERE galleryid = '$gallery_id' AND userid = '1'" );
$db->exec( "DELETE FROM table2 WHERE galleryid = '$gallery_id'" );
$db->commit();
} catch( PDOException $e ) {
$db->rollBack();
echo $e->getMessage();
}
在第一个删除查询中,我查询了一些不正确的内容(即 table1 中没有 user_id 等于 1 的实例)。尽管如此,第二次删除还是通过了。这可能是预期的行为,我没有正确测试。
那么,我将如何使用事务正确编写此内容,以便两个删除都通过或都不通过?