A technique for maintaining integrity in distributed databases. Where a system uses two or more database, a transaction among the distibuted database should be atomic ("all or nothing"). This is done by handling the transaction in two phases. First the databases prepare the transaction, confirm that it is possible to process it, and lock the relevant record.
Once all the required databases confirm that the transaction is viable, the system instructs them all to commit it - i.e. to make it permanent. If it is not possible to process it, the system will instruct the databases to rollback (undo) the transaction.