i think it's only ever reasonable to use the DB provided transactions to make sure something is either written to the DB or aborted altogether, including a possible rollback (by the DB) of any table modifications before end of transaction is reached. even in the event of a power failure, DB provided transactions will either fully commit or roll back, upon next start of database. i think that's the best level of database integrity you can provide in an application.