以下代码用于检查产品可用性并在产品可用时更新产品数量。以下代码可以正常工作以避免并发更新吗?谢谢
$query= "START TRANSACTION; select pd_qty from tbl_product where pd_id='$pid' and pd_qty=0";
$result=mysql_query($query) or die( mysql_error());
while ($row=mysql_fetch_array($result)){
shortage=1;
}
if (shortage!=1)){
$query= "update tbl_product set pd_qty = .......;
insert into tbl_order ....; "
mysql_query($query) or die( mysql_error());
COMMIT;"
} else {
$query= "COMMIT;"
mysql_query($query) or die( mysql_error());
}
答案 0 :(得分:0)
我修改了这样的代码,它现在可以用吗?
mysql_query('BEGIN');
query="select pd_qty from tbl_product where pd_id='$pid' and pd_qty=0 for update";
$result=mysql_query($query) or die( mysql_error());
while ($row=mysql_fetch_array($result)){
shortage=1;
}
if (shortage!=1)){
$query= "update tbl_product set pd_qty = .......;"
mysql_query($query) or die( mysql_error());
$query= "insert into tbl_order ....; "
mysql_query($query) or die( mysql_error());
}
mysql_query('COMMIT');