You don't have to lock the table if you don't need to.
Locking would only be needed if there is any chance of a change being made to the set of records involved after the insert but before the deletion; for example if the records comprising the "shopping basket" were copied to the new table, then another item added to the basket by a different client, then the basket was deleted, your database would probably end up in an inconsistent state. However, if there is no possibility of something like that happening, you won't need to lock the table.
You might also like to think about your database design. Moving records between different tables with the same structure sounds (on the face of it) like something that should be avoided if possible. If instead you just had a "paid for" field in the table, that might be a better and more reliable solution. However, you of course know more about your application than I do.