I need to store user entered changes to a particular table, but not show those changes until they have been viewed and approved by an administrative user. While those chang
Definitely store them in the main table with a column to indicate whether the data is approved or not.
When the change is approved, no copying is required. The extra work to filter the unapproved data is the sort of thing databases are supposed to do, when you think about it. If you index the approved column, it shouldn't be too burdensome to do the right thing.
I work in a banking domain and we have this need - that the changes done by one user must only be reflected after being approved by another. The design we use is as below
I recommend this approach. It handles all scenarios including updates and deletions very gracefully.