【发布时间】:2019-12-31 12:01:13
【问题描述】:
我正在研究锁表,但我有一些疑问,我找不到关于我的问题的答案。
我有一个 mysql 数据库(版本 5.7)和一个网站(PHP 7.0),您可以在其中购买一些音乐会的门票。
所以,我有一张桌子,上面有每场音乐会的门票数量。
当用户点击预订按钮时,我会在 mysql 中调用一个程序来检查是否有票,如果答案是肯定的,则减少数量并下订单。
所有的表都有 InnoDB 引擎。
表格
名称:concert_ticket
列:id(主键,自动增量),concert_id,ticket_number p>
代码
$querySituation = $db->query("CALL decrementConcert('".$idConcert."',@response)");
$requestSituation = $db->Query("SELECT @response as result;");
$resultProcedure = $requestSituation->fetch_assoc();
if($resultProcedure['result'] != 0){
//insert order
}
现在,我的问题是:
1.这种情况下是否需要主动锁表?
2. 在mysql 5.7 中,是否需要默认锁定表?或者我必须始终在我的代码中手动执行此操作?
3.要使用锁表,我必须在过程之前用查询锁定表,插入后解锁表?
【问题讨论】:
-
"当用户点击预订按钮时,我会在 mysql 中调用一个程序来检查是否有票,如果答案是肯定的,则减少数量并下订单。" 你应该研究 InnoDB 引擎和事务..
标签: mysql