You could wrap the transaction in a lock based on the player ID which you could do with Redis or Memcached with near-zero impact on performance.
A good reference: http://www.nateware.com/an-atomic-rant.html
A good reference: http://www.nateware.com/an-atomic-rant.html