我想知道是否可以从我的事务中获取select查询的结果集。 Mysql返回表已更新,但返回0行。
这是交易:
START TRANSACTION;
SELECT *, @A:=id FROM mailer_log LIMIT 0,10;
UPDATE mailer_log SET picked=1 WHERE id=@A;
COMMIT;
答案 0 :(得分:0)
如果您逐步执行这些操作,则在步骤2之后获得结果集。
如果您想要修改记录的结果集,则必须再次进行查询。
这并不像听起来那么糟糕,因为无论如何所有数据都会在内存中(除非你有数百万条记录具有相同的id),因为你刚刚检索并更新了它们。
perl中的示例:
$dbh->begin_work;
$ary_ref = $dbh->selectall_arrayref("SELECT * FROM mailer_log WHERE id = '$a' LIMIT 0,10");
# ... do something interesting with the result set
$dbh->do("UPDATE mailer_log SET picked=1 WHERE id='$a'");
$dbh->commit;