I came across Eliotte Rusty Harold's missive PUT is not UPDATE via rest-discuss.
Not gonna lie -- I think that reducing PUT to bitblt() is a pretty limiting view of HTTP.
The essential difference between PUT and POST is that POST allocates a new name while PUT doesn't [1]. Neither verb has anything to say about representation.
But I agree -- the SQL analogy of PUT <-> UPDATE is tired. PUT isn't UPDATE, it's
public virtual Representation ApplyState( Representation state );
For PUT, the request-uri is the "this" pointer. The object behind the "this" pointer can apply the incoming state in whatever way it wants -- including but not limited to a simple bitwise copy of the new state into itself.
Just the opinion of one dude with a blog, naturally.
[1] That's the purist view of POST, of course...
