Why? As in "why move the records around?" You already have a lead to a
solution in the other response to your question.
Add a "flag" field to indicate that a record is cancelled, then modify your
queries to exclude "cancelled" records. All the data stays in place, and
you can, if you need to, easily look up ALL records without having to look
in more than one table.