Faites-le en un :
UPDATE `users`
SET `rights` = '[PRO]', points = points - 50
WHERE
`username` = 'somename'
AND points >= 50
AND rights != '[PRO]'
Et vérifiez simplement si vous avez une rangée affectée ou non. S'ils n'ont pas assez de points, il ne sera pas mis à jour, et ce ne sera pas le cas non plus lorsqu'ils en auront déjà le droit. Cela évite les conditions de course.