Automatic tracking requires really explicit documentation about what it does. It won't be common, but it will happen that SELECT and UPDATE actually happen in different transactions (or in otherwise a non-ACID mode) -- in which case, just comparing content is not a good idea (you do rec.field='the value i want' to guarantee it is that way, and it was that way in the SELECT, but has since changed in the DB.
The only reasonable "automatic" way is to track actual assignments and execute them _even_ the newly set value is the same as the previous one; either that or updating everything. Any other way to subset the update should be explicitly specified by the user..
