• I second Peter Midgley. Everything he said happens in our company too. 

    We use a trigger based system. We track every time a row is add/deleted/changed by user and time , and we record the old data for "important" fields that get changed. But we don't create an entire duplicate database.

    This keeps the space needed for audit logs to a sane level (it's an OLTB system).

    I also have to agree that accountability is a WONDERFUL way to keep users careful...