The application can enforce the all-or-nothing property, but it is much simpler to have the database enforce it. The system enforces the all-or-nothing property if it has the information that one or more statements constitutes a transaction. If one of the statements in a transaction fails, the system aborts the transaction and returns any database that was affected to the state it would have been in if the transaction had not been submitted.