我有一个关于 MySQL 提交和事务的问题。我有几个执行 MySQL 查询的 PHP 语句。我只是说以下吗?
mysql_query("START TRANSACTION");
//more queries here
mysql_query("COMMIT");
这究竟会做什么?它有什么帮助?对于更新、删除和插入,我还发现这会阻止其他查询读取:
mysql_query("LOCK TABLES t1 WRITE, t2 WRITE");
//more queries here
mysql_query("UNLOCK TABLES t1, t2");
这会阻止其他任何性质的查询还是仅写入/选择?
另一个问题:假设一个查询正在运行并阻止其他查询。另一个查询尝试访问被阻止的数据 - 它发现它被阻止了。它是如何进行的?是否等到数据再次解除阻塞并重新执行查询?它只是失败并需要重复吗?如果是这样,我该如何检查?
非常感谢!
丹尼斯