Basically, you want to create a trigger that fires BEFORE INSERT/UPDATE/DELETE and saves your values to a table. At one client, we wanted to audit the values of the XYZ table. We created a table called XYZ_AUDIT that had the exact same columns as XYZ with the addition of USERNAME, AUDIT_DATE, AUDIT_ACTION. The AUDIT_ACTION was 'INSERT' for an insert statement, 'OLD' for the old row in an UPDATE statement, 'NEW' for the updated row in an UPDATE statement, and 'DELETE' for a deleted row.