0

在使用我的 PHP 代码更新 MYSQL 表后,我需要返回受影响行的主键。有没有办法做到这一点?

4

2 回答 2

2

在执行以下操作之前,您需要获取主键UPDATE

SELECT primary_key_columns FROM my_table WHERE status = 'O';
UPDATE my_table SET status = 'E' WHERE status = 'O';

但是,如果您有可能my_table在两个语句之间更改的并发连接,则第一个语句返回的键的结果可能SELECT与第二个语句更新的记录不完全匹配UPDATE

为了防止这种情况,您需要在事务中执行操作(但请注意,事务需要存储引擎的支持 - InnoDB 通常用于此目的):

START TRANSACTION;
SELECT primary_key_columns FROM my_table WHERE status = 'O' FOR UPDATE;
UPDATE my_table SET status = 'E' WHERE status = 'O';
COMMIT;
于 2012-05-19T08:00:38.740 回答
1

做你想做的事情的一种方法是在你做更新之前选择带有更新条件的主键。

如果您的查询是

从“表”更新*,其中 Y

您必须执行以下操作:

从“表”中选择“主键”,其中 Y

从 Y 的“表”更新 X

希望这可以帮助!

于 2012-05-19T07:56:08.560 回答