php - 锁定表以读取 MYSQL

标签 php mysql

我想锁定一个特定的表以供读取,但是当我查询时

   mysql_query("LOCK TABLES unique_voucher READ");

进入数据库后,它只允许我读取这个表,而不能读取其他表。

是否可以只锁定这个特定的表,并且在某个进程完成之前不允许用户查询这个表?

(这是因为我拿着一个计数器,如果很多用户同时连接,他们可能会得到不明确的数字,所以在一个用户准备好处理一次之前,我想锁定一个表的读数)

最佳答案

如果您为所有用户共享相同的数据库连接,一种可能的解决方案是锁定所有其他表,除了您想要的表。锁定的表将可用。

来自 http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html :

“需要锁的 session 必须在单个 LOCK TABLES 语句中获取它需要的所有锁。当持有由此获得的锁时, session 只能访问锁定的表。例如, 在以下语句序列中,尝试访问 t2 时发生错误,因为它未在 LOCK TABLES 语句中锁定:"

mysql> LOCK TABLES t1 READ;
mysql> SELECT COUNT(*) FROM t1;
+----------+
| COUNT(*) |
+----------+
|        3 |
+----------+
mysql> SELECT COUNT(*) FROM t2;
ERROR 1100 (HY000): Table 't2' was not locked with LOCK TABLES

关于php - 锁定表以读取 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6293155/

相关文章:

用于检查 alter mysql 数据库的 PHP 脚本

mysql - 如何在 Node/Express 中为数组的每次迭代发送 Post 请求?

php - 将数组传递给 CakePHP 中的 requestAction

php - php 中的搜索查询

php - 使用php创建数据库表出错

php - 在sql查询中创建计数器

c# - 在 C# 中从 Ajax 获取值(value)

php - 现有的php图像上传脚本的进度条?

mysql - sql 删除带有 where、and 或 laravel 的查询

php - 在 PHP 中对逗号分隔值列表运行选择