如果用户在完成流程之前退出,如何在mysql中解锁表?

时间:2017-02-08 04:11:21

标签: php mysql database

如果用户在数据保存到数据库时关闭页面或浏览器,如何解锁mysql表。以下是我正在尝试的内容。

//to lock table
mysql_query("LOCK TABLES wo_booking WRITE");

//insert query
$pass_add=$objA->insert_fields(TABLEPREFIX.'booking',$fields,$values);

//to unlock table after write
mysql_query("UNLOCK TABLES");

如果表格没有解锁,那么下一个用户数据如何保存?

1 个答案:

答案 0 :(得分:1)

如果持有锁的会话过期,表将自动解锁。因此,最好使用交易及其到期,而我不确定lock tables insert查询innodb引擎!

您可以将innodb_lock_wait_timeout设置为最佳值。

 set innodb_lock_wait_timeout = 88

如MySQL参考手册中所述:https://dev.mysql.com/doc/refman/5.7/en/lock-tables.html

  
      
  • 会话可以使用UNLOCK TABLES显式释放其锁。

  •   
  • 如果会话发出LOCK TABLES语句以在锁定时获取锁定,则在授予新锁定之前会隐式释放其现有锁定。

  •   
  • 如果会话开始事务(例如,使用START TRANSACTION),则会执行隐式UNLOCK TABLES,这会导致释放现有锁。 (有关表锁定和事务之间交互的其他信息,请参见第14.3.5.1节“Interaction of Table Locking and Transactions”。)

  •