Получить набор результатов из транзакции MySQL - PullRequest
1 голос
/ 24 июня 2010

Мне было интересно, возможно ли получить набор результатов запроса 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 голосов
/ 24 июня 2010

Если вы делаете это шаг за шагом, у вас будет набор результатов после шага 2.

Если вам нужен набор результатов измененных записей, вам придется выполнить запрос еще раз.

Это не так плохо, как кажется, поскольку все данные все равно будут в памяти (если, конечно, у вас нет миллионов записей с одинаковым идентификатором), поскольку вы только что получили и обновили их.

Пример в 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...