I think the only useful thing we can do is abort the transaction and return false. Any database errors will trigger an exception which will stop the transaction. I'll fix up the else statements.