从mysql事务中获取结果集

时间:2010-06-24 09:57:03

标签: mysql transactions

我想知道是否可以从我的事务中获取select查询的结果集。 Mysql返回表已更新,但返回0行。

这是交易:

START TRANSACTION;
SELECT *, @A:=id FROM mailer_log LIMIT 0,10;
UPDATE mailer_log SET picked=1 WHERE id=@A;
COMMIT;

1 个答案:

答案 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;