[This is preliminary documentation and subject to change.]
Changes made to the installation database are not written to the database until you call MsiDatabaseCommit.
Changes made in a database are accumulated and are not reflected in the actual database until you call MsiDatabaseCommit. Temporary columns or rows are not committed to the database. When a database is closed, all changes made since the last MsiDatabaseCommit are automatically rolled back.