Mysql 在同一字段上组合两个具有不同值的更新查询

Mysql 在同一字段上组合两个具有不同值的更新查询,mysql,Mysql,我目前有两个使用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";

我目前有两个使用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";

我很难将我的头缠绕在连接上,一些人说连接更快,而另一些人说连接更慢。最好的解决方案是什么?

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


但毕竟,这取决于你的要求。如果您需要同时执行两个更新,或者两个都不执行(在第二个更新失败时回滚),那么我宁愿使用一个
句子
方法。通过这种方式,您可以从事务中获益。

我认为您需要
在这种情况下,我不需要执行任何查询、第一次查询或第一次和第二次查询。谢谢你的反馈。