> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/server/reference/sql-statements/data-manipulation/selecting-data/for-update.md).

# FOR UPDATE

InnoDB supports row-level locking. Selected rows can be locked using [LOCK IN SHARE MODE](/docs/server/reference/sql-statements/data-manipulation/selecting-data/lock-in-share-mode.md) or FOR UPDATE. In both cases, a lock is acquired on the rows read by the query, and it will be released when the current transaction is committed.

The `FOR UPDATE` clause of [SELECT](/docs/server/reference/sql-statements/data-manipulation/selecting-data/select.md) applies only when [autocommit](/docs/server/server-management/variables-and-modes/server-system-variables.md#autocommit) is set to 0 or the `SELECT` is enclosed in a transaction. A lock is acquired on the rows, and other transactions are prevented from writing the rows, acquire locks, and from reading them (unless their isolation level is [READ UNCOMMITTED](/docs/server/reference/sql-statements/administrative-sql-statements/set-commands/set-transaction.md)).

If `autocommit` is set to 1, the [LOCK IN SHARE MODE](/docs/server/reference/sql-statements/data-manipulation/selecting-data/lock-in-share-mode.md) and `FOR UPDATE` clauses have no effect in InnoDB. For non-transactional storage engines like MyISAM and ARIA, a table level lock will be taken even if autocommit is set to 1.

If the isolation level is set to [SERIALIZABLE](/docs/server/reference/sql-statements/administrative-sql-statements/set-commands/set-transaction.md), all plain `SELECT` statements are converted to `SELECT ... LOCK IN SHARE MODE`, provided `AUTOCOMMIT` is disabled (or the statement runs inside an explicit transaction). With `AUTOCOMMIT` enabled, plain `SELECT` statements run as consistent reads.

## Example

```sql
SELECT * FROM trans WHERE period=2001 FOR UPDATE;
```

## See Also

* [SELECT](/docs/server/reference/sql-statements/data-manipulation/selecting-data/select.md)
* [LOCK IN SHARE MODE](/docs/server/reference/sql-statements/data-manipulation/selecting-data/lock-in-share-mode.md)
* [InnoDB Lock Modes](/docs/server/server-usage/storage-engines/innodb/innodb-lock-modes.md)

<sub>*This page is licensed: CC BY-SA / Gnu FDL*</sub>

{% @marketo/form formId="4316" %}
