有没有一种简单的方法来获取受 DBI 更新语句影响的行的 ID?在这种特殊情况下,它将始终为 0 行或 1 行。我不希望不得不再次重做查询的选择部分来获取数据,因为这有点昂贵。
我必须先进行更新,否则我会在选择和更新之间引入竞争时间条件的可能性。
您可能想阅读这个相关的 SO 主题(我已链接到@Erwin Brandstetter的答案)——这是我一直处理它的方式。
根据您的数据库引擎,您可能拥有一个SELECT ... FOR UPDATE
设施。你应该用这个来
SELECT ... FOR UPDATE
您要更新的记录
从记录中保存ID
,并UPDATE
使用ID
而不是原始条件进行
关于 SELECT ... FOR UPDATE的MySQL 文档可以帮助您处理事务。