Script 1.
$query_ = \"lock tables test1 as test11 write\";
mysql_query($query);
$query_ = \"select * from test11\";
sleep(20);
$query_ = \"unlock tables\";
m
If you do not want others to access that table then use
LOCK TABLES test1 WRITE;
Other script will not return error but will wait until lock is released.
Hope it helps...
You have to grant the rights of lock tables to the db user.
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):
Info on the read
lock type:
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";
You have a misconception about what locks do. Locks to do not prevent other scripts from accessing data, instead locks affect the timing of when other scripts will access the data. When script 2 tries to access or modify data that it is not allowed to because of a lock, it will pause and wait for the lock to be released. After script 1 unlocks the table, script 2 will proceed and complete without any problems.