InnoDB表事务和锁表是否可以一起用?

数据库   发布日期:2023年05月26日   浏览次数:429

经过自己的测试,必须是InnoDB表才能执行事务,MyISAM表不支持事务,事务和锁表不要一起用,因为unlock tables解锁表时会造成事务的提交,要不然可能达不预期,至少我自己测试是没有达到自己的设想。

  1. //事务
  2. $mysqli->query("BEGIN");//开启事务
  3. $sql="insert into abc (title) values ('".date("H:i:s")."---此条为事务提交') ";
  4. $mysqli->query($sql);
  5. $mysqli->query("COMMIT");//"COMMIT","ROLLBACK"事务回滚
  6.  
  7. sleep(5);//此过程中等待5秒,刷新数据表可以看到之前事务提交是已经有数据的,表也可以刷新,但5秒后处理锁表卡死等待状态
  8.  
  9. //锁表
  10. $mysqli->query("lock tables abc write");//多表锁定:lock tables abc write,bcd write");
  11. $sql="insert into abc (title) values ('".date("H:i:s")."---此条为锁表写入') ";
  12. $mysqli->query($sql);
  13. sleep(10);
  14. $mysqli->query("unlock tables");
  15. exit;


以上就是InnoDB表事务和锁表是否可以一起用?的详细内容,更多关于InnoDB表事务和锁表是否可以一起用?的资料请关注九品源码其它相关文章!