If there's an error, the transaction just rolls back. I've been using this strategy for years and I have never once had a transaction "break everything."
They are many ways for a database to behave in a not obvious way...
Typically error handling, xabort (in sql server, especially if you don't want to get blocking orphan connections etc).