问题描述
脚本1.
$query_ = "lock tables test1 as test11 write";
mysql_query($query);
$query_ = "select * from test11";
sleep(20);
$query_ = "unlock tables";
mysql_query($query_);
脚本2.
$query_ = "select * from test1";
$result = mysql_query($query_);
问题是,如果我在运行第一个脚本的同时运行第二个脚本. 表未锁定.而且我可以从中读取任何数据.
The problem is that if i run second script while running first script. Table is not locked. And i can read any data from it.
我需要将其锁定并返回错误.
I need it to be locked and return error.
如何进行这项工作?
推荐答案
您正在read
用$query_ = "lock tables test1 as test11 read";
-锁定表,这意味着其他查询仍然可以读取表而没有任何问题(相关链接-向下滚动至有关锁类型的部分):
You are read
locking the table with $query_ = "lock tables test1 as test11 read";
- which means that other queries can still read it without any problems what-so-ever (Relevant link - scroll down to the section on lock types):
read
锁类型的信息:
- 持有锁的会话可以读取表(但不能写入表).
- 多个会话可以同时获取该表的READ锁.
- 其他会话可以在不显式获取READ锁的情况下读取表.
如果要停止其他任何操作,除了要重定义表外,还需要使用write
锁,如下所示:
If you want to stop anything else so much as reding the table, you need to use a write
lock as follows:
$query_ = "lock tables test1 as test11 write";
这篇关于用PHP锁定MySQL表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!