In realtà PDO::beginTransaction()
segue le stesse regole di un START TRANSACTION
dichiarazione in MySQL, maggiori informazioni qui
.
Ciò significa che MySQL non bloccherà immediatamente la tabella, ma seguirà l'ACID regole.
Nota che se hai bisogno di bloccare in modo esplicito alcune tabelle puoi fare:
$db->beginTransaction();
$db->exec('LOCK TABLES t1, t2, ...');