【发布时间】:2012-08-29 13:38:42
【问题描述】:
脚本 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_);
问题是,如果我在运行第一个脚本时运行第二个脚本。表未锁定。我可以从中读取任何数据。
我需要它被锁定并返回错误。
如何做到这一点?
【问题讨论】:
-
这可能无助于回答您的问题,但您应该停止使用
mysql_*函数。它们正在被弃用。请改用PDO(PHP 5.1 起支持)或mysqli(PHP 4.1 起支持)。如果您不确定使用哪一个,read this article。 -
我相信该表只会针对那个特定的 mysql 连接实例被锁定。我认为这样可以防止出现竞争条件。
-
为特定的 mysql 连接锁定它有什么意义?当我不插入任何东西时,为什么我的脚本要插入一些东西?
-
也许我错了。也许我很困惑,我在想的是它实际上在脚本执行期间会自动锁定表以防止出现竞争条件......对不起,我在这里帮不上什么忙。