Beh ma così ti ritrovi nella situazione di dover controllare la disponibilità di ogni prodotto singolarmente (più query) e, in aggiunta, non essendo una transazione, se devi annullare tutto perché uno dei check è fallito devi fare tutti i vari update per ripristinare le disponibilità.
A questo punto conviene più usare le transazioni, almeno il rollback è gestito automaticamente con un solo comando