La transaction commence par SET TRANSACTION, mais l'allocation du transaction_id est retardée jusqu'au premier DML (véritable DML - dans mon expérience, pas une instruction SELECT)
Cela a du sens pour moi, il n'y a aucune raison de valider ou d'annuler un SELECT.