如何在以前的MySQL操作中获取受影响的行?

Ste*_*ven 3 php mysql sql

mysql_affected_rows是获取以前MySQL操作中受影响的行数,但我希望在之前的MySQL操作中获得受影响的行.例如:

update mytable set status=2 where column3="a_variable";
Run Code Online (Sandbox Code Playgroud)

在此操作之前,某些行的状态已经是2,我想在之前的MySQL操作中获取受影响的行,您无法通过发出查询来获取它

select * from mytable where status=2
Run Code Online (Sandbox Code Playgroud)

那么如何做这项工作呢?

car*_*arl 5

可以通过以下方式高效,简单地实现:

 select * from mytable where column3="a_variable" and status != 2;
 update mytable set status=2 where column3="a_variable";
Run Code Online (Sandbox Code Playgroud)

第一个查询的结果是要更改的行,第二个查询实际更改它们.

如果这是一个高性能系统,您可能需要特别注意事务,以防止新行在这两个查询之间滑动.