Shifting gears a bit, the whole idea of a staging table is to pre-validate rows of data so that you don't end up with such a problem as rollbacks. I typically add a column or two to my staging table so that I can mark rows that need to be inserted or updated or shouldn't be used because of a validation error and the other column for why the row failed validation.
--Jeff Moden
Change is inevitable... Change for the better is not.