--- title: "COMMIT" id: sql-commit pg_version: "20devel" --- # COMMIT — commit the current transaction ## Synopsis ``` COMMIT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ] ``` ## Description `COMMIT` commits the current transaction. All changes made by the transaction become visible to others and are guaranteed to be durable if a crash occurs. If the transaction is in an aborted state then no changes will be made and the effect of the `COMMIT` will be identical to that of `ROLLBACK`, including the command tag output. In either case, if the `AND CHAIN` parameter is specified then a new, identically configured, transaction is started. For more information regarding transactions see [Section 3.4](tutorial-transactions.md). ## Parameters **`WORK`**, **`TRANSACTION`** Optional key words. They have no effect. **`AND CHAIN`** If `AND CHAIN` is specified, a new transaction is immediately started with the same transaction characteristics (see [SET TRANSACTION](sql-set-transaction.md)) as the just finished one. Otherwise, no new transaction is started. ## Outputs On successful completion of a non-aborted transaction, a `COMMIT` command returns a command tag of the form COMMIT However, in an aborted transaction, a `COMMIT` command returns a command tag of the form ROLLBACK ## Notes Use [ROLLBACK](sql-rollback.md) to abort a transaction. Issuing `COMMIT` when not inside a transaction does no harm, but it will provoke a warning message. `COMMIT AND CHAIN` when not inside a transaction is an error. ## Examples To commit the current transaction and make all changes permanent: COMMIT; ## Compatibility The command `COMMIT` conforms to the SQL standard, except that no exception condition is raised in the case where the transaction was already aborted. The form `COMMIT TRANSACTION` is a PostgreSQL extension. ## See Also [BEGIN](sql-begin.md), [ROLLBACK](sql-rollback.md), [Section 3.4](tutorial-transactions.md)