I have tested the following statement.
UPDATE CharacterInfo
SET ChaRating = floor((ChaRating + ChaOldRating)/2),
ChaOldRating = ChaRating
And it seems this part (ChaOldRating = ChaRating)
does set the value from the table before it's updated.
I don't want to leave this type of transaction to chance so I may need a clarification.
Does SQL Server update the row as a whole by default or is there a setting or statement that I may need to include in the stored procedure to make sure it does?