# Transactions

- [COMMIT](https://mariadb.com/docs/server/reference/sql-statements/transactions/commit.md): Commit the current transaction. This statement permanently saves all changes made during the current transaction to the database.
- [LOCK TABLES](https://mariadb.com/docs/server/reference/sql-statements/transactions/lock-tables.md): Complete LOCK TABLES reference: READ/WRITE/WRITE CONCURRENT lock syntax, table aliases, WAIT n|NOWAIT timeouts, UNLOCK TABLES, and innodb\_table\_locks behavior.
- [Metadata Locking](https://mariadb.com/docs/server/reference/sql-statements/transactions/metadata-locking.md): Understand how MariaDB manages concurrency. Metadata locks protect the structure of database objects from being modified while they are in use.
- [READ COMMITTED](https://mariadb.com/docs/server/reference/sql-statements/transactions/transactions-read-committed.md): Set the transaction isolation level to READ COMMITTED. In this mode, each query within a transaction sees only data committed before the query began.
- [READ UNCOMMITTED](https://mariadb.com/docs/server/reference/sql-statements/transactions/transactions-read-uncommitted.md): Set the transaction isolation level to READ UNCOMMITTED. This lowest isolation level allows dirty reads, where a transaction can see uncommitted changes.
- [REPEATABLE READ](https://mariadb.com/docs/server/reference/sql-statements/transactions/transactions-repeatable-read.md): Set the transaction isolation level to REPEATABLE READ. This default InnoDB level ensures consistent results for repeated reads within the same transaction.
- [ROLLBACK](https://mariadb.com/docs/server/reference/sql-statements/transactions/rollback.md): Undo changes in the current transaction. This statement reverts the database to its state before the transaction started or to a specific savepoint.
- [SAVEPOINT](https://mariadb.com/docs/server/reference/sql-statements/transactions/savepoint.md): Create a named marker within a transaction. Savepoints allow you to roll back part of a transaction without canceling the entire operation.
- [SERIALIZABLE](https://mariadb.com/docs/server/reference/sql-statements/transactions/transactions-serializable.md): Set the transaction isolation level to SERIALIZABLE. This highest level ensures total isolation by converting plain SELECTs to locking reads.
- [SQL statements Causing an Implicit Commit](https://mariadb.com/docs/server/reference/sql-statements/transactions/sql-statements-that-cause-an-implicit-commit.md): Identify statements that force a commit. Certain commands, like DDL statements, implicitly commit the current transaction before executing.
- [START TRANSACTION](https://mariadb.com/docs/server/reference/sql-statements/transactions/start-transaction.md): Complete START TRANSACTION reference: BEGIN/COMMIT/ROLLBACK syntax, WITH CONSISTENT SNAPSHOT option, READ ONLY/WRITE modes, AND \[NO] CHAIN/RELEASE modifiers.
- [Transaction Timeouts](https://mariadb.com/docs/server/reference/sql-statements/transactions/transaction-timeouts.md): Understand how timeouts affect transactions. This section explains system variables that control wait times for locks and transaction duration.
- [UNLOCK TABLES](https://mariadb.com/docs/server/reference/sql-statements/transactions/transactions-unlock-tables.md): Release explicit table locks. This statement releases all locks acquired by the current session with LOCK TABLES.
- [WAIT and NOWAIT](https://mariadb.com/docs/server/reference/sql-statements/transactions/wait-and-nowait.md): Control lock wait behavior. These clauses allow statements to wait for a specific timeout or fail immediately if a lock cannot be acquired.
- [XA Transactions](https://mariadb.com/docs/server/reference/sql-statements/transactions/xa-transactions.md): Manage distributed transactions. This section covers XA statements for coordinating two-phase commits across multiple resources.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mariadb.com/docs/server/reference/sql-statements/transactions.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
