Когато извикате PDO::beginTransaction() , изключва автоматичното ангажиране.
Така че можете да направите:
$db->beginTransaction();
$db->exec('LOCK TABLES t1, t2, ...');
# do something with tables
$db->commit();
$db->exec('UNLOCK TABLES');
След commit() или rollBack(), базата данни ще се върне в режим на автоматично ангажиране.