如果不是为了在事务级别管理复杂的数据库逻辑,我不建议明确锁定数据库表。查询仍然会被发送出去,但由于锁而失败,或者更糟糕的是,其他事务由于在错误的时间获取锁而死锁。
因此,您喜欢在应用程序中破坏任何表面上的性能。
编辑:
http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html
mysql 的文档详细说明了锁的操作方式。为使用它的会话获取锁,因此如果您希望您的会话无权访问某些表和别名,那么您希望锁定除您要拒绝会话访问的表之外的所有内容。
不确定您希望测试什么锁作为示例。
define("READ_LOCK", 0)
define("WRITE_LOCK",1)
function lock_on_to_tables ($Tables, $lockType=0)
{
$sql = "LOCK TABLES "
foreach ($Tables as $table)
$sql .= $table . " ,";
$sql = substr($sql, 0, -1); // cut off last comma
$sql .= $lockType ? " WRITE" : " READ;
mysqli_query($sql); // or pdo or whatever is in use.
}
解锁只是
mysqli_query("UNLOCK TABLES") ;