Is this code actually hiding a bug?  Should change_date actually be updated for all records (even those not actually changing) when changes are committed?