如果用户在数据保存到数据库时关闭页面或浏览器,如何解锁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");
如果表格没有解锁,那么下一个用户数据如何保存?
答案 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”。)