Product after product, the question eventually comes from the customer – “How can I see who made what change and when they made them”?
The easiest way to implement audit trails is triggers on the database tables – recording the edit user and edit date time as well as the fields that represent the data they are updating. So, for each master table, you would have an audit table basically capturing versions of the records as they are processed.
Trigger upsides – you can specify detailed processing logic on a per-transaction basis
Trigger downsides – that logic is not always apparent. Many times I’ve searched UI code, back-end java code, and PL sql procedures only to find that the offending code is in the trigger itself.
For more information about triggers, see: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_triggers.htm.