【发布时间】:2014-03-11 16:16:48
【问题描述】:
我有 2 张桌子 A 和 B。
在我的应用程序代码中,我更新了 A 中的一些行,然后使用我在表 A 中处理的行数更新表 B。
为了简单起见,我在我的应用程序代码中执行以下操作:
dbh->begin;
my $amount = 0;
foreach my $item (@item) {
my $row = dbh->do("UPDATE A SET VALUE = ?, STATUS = 'processed' WHERE STATUS <> 'processed' and ID = 12", under, $item->{amount});
$amount += $item->{amount} if($row);
}
if($amount) {
dbh->do("UPDATE B SET AMOUNT = ? WHERE id = ?", undef, $amount, 1234);
}
$dbh->commit;
我保持简单(请忽略任何语法错误)来展示这个想法。
问题是:
当 2 个事务同时运行此代码时会发生什么?
理想情况下,我想以串行模式运行。我怎样才能做到这一点? MySQL 使用可重复读取对吗?
【问题讨论】:
标签: mysql sql concurrency transactions