How do transactions help resilience to system failure? I understand transactions were developed to meet two requirements:


Concurrent DB access
Resilience to system failures


I understand how the concurrency issue is motivated; to overcome the database consistency problem.

However, I have a question:  How do transactions help system resilience to failures?
If I understand your question, the "resilience to system failure" is handled by the server to ensure that the transaction either:


Succeeds in committing the transaction.


Or:


Ensures that a non-committed transaction rolls back to the previous state.


In other words, the transaction completes successfully or else (in a failure) all the in-flight changes are undone since the transaction is incomplete.