脚本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_);
问题是如果我在运行第一个脚本时运行第二个脚本.表未锁定.我可以从中读取任何数据.
我需要它被锁定并返回错误.
如何使这项工作?
最佳答案
你被读取用$query_ =“锁定表test1作为test11读取”来锁定表; – 这意味着其他查询仍然可以读取它而没有任何问题(相关link – 向下滚动到关于锁类型的部分) :
有关读锁类型的信息:
>持有锁的会话可以读取表(但不能写入).
>多个会话可以同时获取表的READ锁.
>其他会话可以在不明确获取READ锁的情况下读取表.
如果你想停止其他任何事情,那么你需要使用写锁,如下所示:
$query_ = "lock tables test1 as test11 write";