Retrieve PRE-UPDATE value to compare to Updated Value in Field

Due to the current lack of granular access for field locking, I am looking for a way to access data in a field BEFORE it is updated, to compare the original value with the newly entered value - to lock out changes. The goal is to block modification to values based on the current date (lock out “old” records). What I’m doing now is saving the original data into an extra field in that table upon initial entry, then if that record is updated (using a view limiting records to prior dates), calling a script that checks the date, and if it’s before the current date, compares the original field’s value to the new field’s entered value in the DB, and then resets the new value back to the stored original value. It’s cumbersome and slow, but it does work. If there was an easier method to either “lock” a field based on a date, or to access previously-stored data for a field (i.e. history), then it would take fewer steps.