我正在研究锁表,但我有一些疑问,我找不到关于我的问题的答案。
我有一个mysql数据库(5.7版)和一个网站(PHP7.0),在那里你可以买到一些音乐会的门票。
所以,我有一张桌子,上面有每场音乐会的门票数量。
当用户点击预订按钮时,我调用mysql中的一个过程,检查是否有票,如果答案是肯定的,减少数量并下订单。
所有的表都有InnoDB引擎。
表
名称: concert_ticket
列: id (主键,自动增量),concert_id,ticket_number
代码
$querySituation = $db->query("CALL decrementConcert('".$idConcert."',@response)");
$requestSituation = $db->Query("SELECT @response as result;");
$resultProcedure = $requestSituation->fetch_assoc();
if($resultProcedure['result'] != 0){
//insert order
}现在,我的问题是:
发布于 2019-08-27 12:55:40
START TRANSACTION;的trasaction下运行以下操作SELECT ... FOR UPDATE;读取当前可用的票证计数。这会锁住这排。COMMIT事务。ROLLBACK或COMMIT (您没有做任何更改)。https://stackoverflow.com/questions/57672405
复制相似问题