mysql - 从 mysql 事务中获取结果集

标签 mysql transactions

我想知道是否有可能从我的事务中获取选择查询的结果集。 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/

相关文章:

transactions - 在 WSO2 ESB 4.7.0 中,我们可以在接收序列中执行 JMS 回滚吗?

Spring tx :annotation-driven ignores mode when load time weaving is enabled in tomcat

mysql - 使用数组值分割逗号分隔的字符串

Php复选框被选中,然后mysql update 1,如果没有选中mysql update 0

java - MYSQL超时

java - Spring @Transaction

sql-server - 如果事务由SET XACT_ABORT ON终止,则SET XACT_ABORT OFF

mysql - 如何避免在 MySQL 中出现 "repair with keycache"?

mysql - 从表 WHERE 中选择 x

mysql - InnoDB x-locks in READ COMMITTED 隔离级别