Reference documentation and code samples for the Cloud Spanner V1 API module Google::Cloud::Spanner::V1::TransactionOptions::ReadWrite::ReadLockMode.
ReadLockMode is used to set the read lock mode for read-write
transactions.
Constants
READ_LOCK_MODE_UNSPECIFIED
value: 0
Default value.
If isolation level is
REPEATABLE_READ,
then it is an error to specify read_lock_mode. Locking semantics
default to OPTIMISTIC. No validation checks are done for reads,
except to validate that the data that was served at the snapshot time
is unchanged at commit time in the following cases:
reads done as part of queries that use SELECT FOR UPDATE
reads done as part of statements with a LOCK_SCANNED_RANGES
hint
reads done as part of DML statements
At all other isolation levels, if read_lock_mode is the default
value, then pessimistic read locks are used.
PESSIMISTIC
value: 1 Pessimistic lock mode.
Read locks are acquired immediately on read.
Semantics described only applies to
SERIALIZABLE
isolation.
OPTIMISTIC
value: 2 Optimistic lock mode.
Locks for reads within the transaction are not acquired on read.
Instead the locks are acquired on a commit to validate that
read/queried data has not changed since the transaction started.
Semantics described only applies to
SERIALIZABLE
isolation.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Cloud Spanner V1 API - Module Google::Cloud::Spanner::V1::TransactionOptions::ReadWrite::ReadLockMode (v1.10.0)\n\nVersion latestkeyboard_arrow_down\n\n- [1.10.0 (latest)](/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.9.1](/ruby/docs/reference/google-cloud-spanner-v1/1.9.1/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.8.0](/ruby/docs/reference/google-cloud-spanner-v1/1.8.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.7.1](/ruby/docs/reference/google-cloud-spanner-v1/1.7.1/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.6.0](/ruby/docs/reference/google-cloud-spanner-v1/1.6.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.5.0](/ruby/docs/reference/google-cloud-spanner-v1/1.5.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.4.0](/ruby/docs/reference/google-cloud-spanner-v1/1.4.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.3.0](/ruby/docs/reference/google-cloud-spanner-v1/1.3.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.2.0](/ruby/docs/reference/google-cloud-spanner-v1/1.2.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.1.0](/ruby/docs/reference/google-cloud-spanner-v1/1.1.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [1.0.2](/ruby/docs/reference/google-cloud-spanner-v1/1.0.2/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.27.0](/ruby/docs/reference/google-cloud-spanner-v1/0.27.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.26.0](/ruby/docs/reference/google-cloud-spanner-v1/0.26.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.25.0](/ruby/docs/reference/google-cloud-spanner-v1/0.25.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.24.0](/ruby/docs/reference/google-cloud-spanner-v1/0.24.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.23.0](/ruby/docs/reference/google-cloud-spanner-v1/0.23.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.22.2](/ruby/docs/reference/google-cloud-spanner-v1/0.22.2/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.21.0](/ruby/docs/reference/google-cloud-spanner-v1/0.21.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.20.1](/ruby/docs/reference/google-cloud-spanner-v1/0.20.1/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.19.0](/ruby/docs/reference/google-cloud-spanner-v1/0.19.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.18.0](/ruby/docs/reference/google-cloud-spanner-v1/0.18.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.17.0](/ruby/docs/reference/google-cloud-spanner-v1/0.17.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.16.0](/ruby/docs/reference/google-cloud-spanner-v1/0.16.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.15.1](/ruby/docs/reference/google-cloud-spanner-v1/0.15.1/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.14.1](/ruby/docs/reference/google-cloud-spanner-v1/0.14.1/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.13.0](/ruby/docs/reference/google-cloud-spanner-v1/0.13.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.12.0](/ruby/docs/reference/google-cloud-spanner-v1/0.12.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.11.0](/ruby/docs/reference/google-cloud-spanner-v1/0.11.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.10.0](/ruby/docs/reference/google-cloud-spanner-v1/0.10.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.9.0](/ruby/docs/reference/google-cloud-spanner-v1/0.9.0/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.8.1](/ruby/docs/reference/google-cloud-spanner-v1/0.8.1/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode)\n- [0.7.4](/ruby/docs/reference/google-cloud-spanner-v1/0.7.4/Google-Cloud-Spanner-V1-TransactionOptions-ReadWrite-ReadLockMode) \nReference documentation and code samples for the Cloud Spanner V1 API module Google::Cloud::Spanner::V1::TransactionOptions::ReadWrite::ReadLockMode.\n\n`ReadLockMode` is used to set the read lock mode for read-write\ntransactions.\n\nConstants\n---------\n\n### READ_LOCK_MODE_UNSPECIFIED\n\n**value:** 0 \n\nDefault value.\n\n\u003cbr /\u003e\n\n- If isolation level is [REPEATABLE_READ](/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-TransactionOptions-IsolationLevel#Google__Cloud__Spanner__V1__TransactionOptions__IsolationLevel__REPEATABLE_READ \"Google::Cloud::Spanner::V1::TransactionOptions::IsolationLevel::REPEATABLE_READ (constant)\"), then it is an error to specify `read_lock_mode`. Locking semantics default to `OPTIMISTIC`. No validation checks are done for reads, except to validate that the data that was served at the snapshot time is unchanged at commit time in the following cases:\n 1. reads done as part of queries that use `SELECT FOR UPDATE`\n 2. reads done as part of statements with a `LOCK_SCANNED_RANGES` hint\n 3. reads done as part of DML statements\n- At all other isolation levels, if `read_lock_mode` is the default value, then pessimistic read locks are used.\n\n### PESSIMISTIC\n\n**value:** 1 \nPessimistic lock mode.\n\n\n\u003cbr /\u003e\n\nRead locks are acquired immediately on read.\nSemantics described only applies to\n[SERIALIZABLE](/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-TransactionOptions-IsolationLevel#Google__Cloud__Spanner__V1__TransactionOptions__IsolationLevel__SERIALIZABLE \"Google::Cloud::Spanner::V1::TransactionOptions::IsolationLevel::SERIALIZABLE (constant)\")\nisolation.\n\n### OPTIMISTIC\n\n**value:** 2 \nOptimistic lock mode.\n\n\n\u003cbr /\u003e\n\nLocks for reads within the transaction are not acquired on read.\nInstead the locks are acquired on a commit to validate that\nread/queried data has not changed since the transaction started.\nSemantics described only applies to\n[SERIALIZABLE](/ruby/docs/reference/google-cloud-spanner-v1/latest/Google-Cloud-Spanner-V1-TransactionOptions-IsolationLevel#Google__Cloud__Spanner__V1__TransactionOptions__IsolationLevel__SERIALIZABLE \"Google::Cloud::Spanner::V1::TransactionOptions::IsolationLevel::SERIALIZABLE (constant)\")\nisolation."]]