A variety of database engines support the concepts of transactions and savepoints. The common idea of both is to group database commands in a way such that the changes caused by the commands can be either written to the database or be rolled back as if the commands hadn't been issued. libdbi provides a consistent interface for both transactions and savepoints.