2

我目前有两个使用 PDO / MySQL 的查询:

$sql = "UPDATE permissions SET valid = 'N' WHERE perm_desc = :perm_desc";
$sth = $this->db->prepare($sql);
$sth->bindParam(':perm_desc', $perm_desc);

$sql2 = "UPDATE role_perm SET valid = 'N' WHERE perm_id = :perm_id";
$sth2 = $this->db->prepare($sql2);
$sth2->bindParam(':perm_id', $perm_id);

我想知道将这些结合起来是否更有意义,类似于:

$sql = "UPDATE permissions, role_perm
        SET permissions.valid = 'N', role_perm.valid = 'N'
        WHERE permissions.perm_desc = :perm_desc AND role_perm.perm_id = :perm_id";

我很难理解 JOIN,有些人说它们更快,而另一些人说它们更慢。什么是最好的解决方案?

4

1 回答 1

0

使用当前两种不同更新的方法,您必须处理第二次更新失败的情况并手动回滚第一次更新。如果您依靠打开的事务为您处理故障,那么您将数据库中的事务打开的时间比需要的时间长。

但毕竟,这取决于您的要求。如果您需要执行两个更新或都不执行(在第二个失败的情况下回滚),那么我宁愿采用一种sentence方法。通过这种方式,您可以从交易中受益。

于 2013-05-11T13:12:29.077 回答