脚本1.
$query_ = "lock tables test1 as test11 write";
mysql_query($query);
$query_ = "select * from test11";
sleep(20);
$query_ = "unlock tables";
mysql_query($query_);
Run Code Online (Sandbox Code Playgroud)
脚本2.
$query_ = "select * from test1";
$result = mysql_query($query_);
Run Code Online (Sandbox Code Playgroud)
问题是如果我在运行第一个脚本时运行第二个脚本.表未锁定.我可以从中读取任何数据.
我需要它被锁定并返回错误.
如何使这项工作?
如果您不希望其他人访问该表,请使用
LOCK TABLES test1 WRITE;
Run Code Online (Sandbox Code Playgroud)
其他脚本不会返回错误,但会等到锁被释放.
希望能帮助到你...
你正在read锁定表$query_ = "lock tables test1 as test11 read";- 这意味着其他查询仍然可以读取它而没有任何问题(相关链接 - 向下滚动到锁类型部分):
关于read锁类型的信息:
如果你想停止其他任何事情,那么你需要使用一个write锁,如下所示:
$query_ = "lock tables test1 as test11 write";
Run Code Online (Sandbox Code Playgroud)