如何解决MariabDB同步UPDATE查询
我正在使用PHP和MariaDB,但遇到了问题。
我将一个值更新为多行,然后选择那里的行以对另一个任务的数据进行新的计算。
这里的问题是我输入了错误的号码。我想MariaDB尚未完成UPDATE查询,但它将完成标志返回给PHP,然后PHP继续进行SELECT查询。 [我猜]
我愿意接受任何想法。如果我错了,请纠正我。
感谢您的分享
这是我的代码
$modelAdminOrderBidSys = $this->load->model('Admin\Order\BidSys');
$acceptedItem = typeCast($modelAdminOrderBidSys->getItem($cartItemId));
if (!$acceptedItem) {
return array(
'result' => 'error','message' => 'Cannot find item #' . $cartItemId
);
}
$acceptedItem['lastOffer'] = $acceptedItem['offer'];
$acceptedItem['accepted'] = 1;
$acceptedItem['isBot'] = 0;
$modelAdminOrderBidSys->updateItem($cartItemId,array2object($acceptedItem));
$cartItems = typeCast($modelAdminOrderBidSys->getItems($acceptedItem['cartId']));
$accepted = 1;
$total = 0;
$offer = 0;
$lastOffer = 0;
foreach($cartItems as $cartItem) {
if ((int)$cartItem['accepted'] < 1) {
$accepted = 0;
}
$total += (float)$cartItem['total'];
$offer += (float)$cartItem['offer'];
$lastOffer += (float)$cartItem['lastOffer'];
}
$postField = new \stdClass();
$postField->accepted = $accepted;
$postField->total = $total;
$postField->offer = $offer;
$postField->lastOffer = $lastOffer;
$modelAdminOrderBidSys->updateCart($acceptedItem['cartId'],$postField);
解决方法
听起来您的SELECT事务在UPDATE提交之前就开始了。尝试将transaction_isolation(在配置中)/ tx_isolation(在运行时使用SET GLOBAL)更改为READ-COMMITTED。默认值为REPEATABLE-READ。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。