我想知道是否有可能从我的事务中获取选择查询的结果集。 Mysql 返回表已更新,但返回 0 行。
这是交易:
START TRANSACTION;
SELECT *, @A:=id FROM mailer_log LIMIT 0,10;
UPDATE mailer_log SET picked=1 WHERE id=@A;
COMMIT;
最佳答案
如果您逐步执行这些操作,您将在第 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;
关于mysql - 从 mysql 事务中获取结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3108880/