prepare("INSERT IGNORE INTO turnero_consecutivos (prefijo, ultimo) VALUES (?, 0)") ->execute([$prefijo]); // Incremento atómico: UPDATE toma lock de fila → dos hilos nunca leen el mismo valor $pdo->prepare("UPDATE turnero_consecutivos SET ultimo = LAST_INSERT_ID(ultimo + 1) WHERE prefijo = ?") ->execute([$prefijo]); $siguiente = (int)$pdo->query("SELECT LAST_INSERT_ID()")->fetchColumn(); jsonOk(['consecutivo' => $prefix . str_pad($siguiente, 3, '0', STR_PAD_LEFT)]);