This message has oneof_ fields (mutually exclusive fields).
For each oneof, at most one member field can be set at the same time.
Setting any member of the oneof automatically clears all other
members.
google.cloud.spanner_v1.types.TransactionOptions.ReadWrite
Transaction may write.
Authorization to begin a read-write transaction requires
spanner.databases.beginOrRollbackReadWriteTransaction
permission on the session resource.
This field is a member of oneof_ mode.
partitioned_dml
google.cloud.spanner_v1.types.TransactionOptions.PartitionedDml
Partitioned DML transaction.
Authorization to begin a Partitioned DML transaction
requires
spanner.databases.beginPartitionedDmlTransaction
permission on the session resource.
This field is a member of oneof_ mode.
read_only
google.cloud.spanner_v1.types.TransactionOptions.ReadOnly
Transaction does not write.
Authorization to begin a read-only transaction requires
spanner.databases.beginReadOnlyTransaction permission on
the session resource.
This field is a member of oneof_ mode.
exclude_txn_from_change_streams
bool
When exclude_txn_from_change_streams is set to true,
it prevents read or write transactions from being tracked in
change streams.
- If the DDL option allow_txn_exclusion is set to
true, then the updates made within this transaction
aren't recorded in the change stream.
- If you don't set the DDL option allow_txn_exclusion
or if it's set to false, then the updates made within
this transaction are recorded in the change stream.
When exclude_txn_from_change_streams is set to false
or not set, modifications from this transaction are recorded
in all change streams that are tracking columns modified by
these transactions.
The exclude_txn_from_change_streams option can only be
specified for read-write or partitioned DML transactions,
otherwise the API returns an INVALID_ARGUMENT error.
IsolationLevel is used when setting isolation_level for a
transaction.
If the value is not specified, the `SERIALIZABLE`
isolation level is used.
SERIALIZABLE (1):
All transactions appear as if they executed
in a serial order, even if some of the reads,
writes, and other operations of distinct
transactions actually occurred in parallel.
Spanner assigns commit timestamps that reflect
the order of committed transactions to implement
this property. Spanner offers a stronger
guarantee than serializability called external
consistency. For further details, please refer
to
https://cloud.google.com/spanner/docs/true-time-external-consistency#serializability.
REPEATABLE_READ (2):
All reads performed during the transaction observe a
consistent snapshot of the database, and the transaction is
only successfully committed in the absence of conflicts
between its updates and any concurrent updates that have
occurred since that snapshot. Consequently, in contrast to
`SERIALIZABLE` transactions, only write-write conflicts
are detected in snapshot transactions.
This isolation level does not support Read-only and
Partitioned DML transactions.
When `REPEATABLE_READ` is specified on a read-write
transaction, the locking semantics default to
`OPTIMISTIC`.
This message has oneof_ fields (mutually exclusive fields).
For each oneof, at most one member field can be set at the same time.
Setting any member of the oneof automatically clears all other
members.
[[["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-09-04 UTC."],[],[],null,["# Class TransactionOptions (3.57.0)\n\nVersion latestkeyboard_arrow_down\n\n- [3.57.0 (latest)](/python/docs/reference/spanner/latest/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.56.0](/python/docs/reference/spanner/3.56.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.55.0](/python/docs/reference/spanner/3.55.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.54.0](/python/docs/reference/spanner/3.54.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.53.0](/python/docs/reference/spanner/3.53.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.52.0](/python/docs/reference/spanner/3.52.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.51.0](/python/docs/reference/spanner/3.51.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.50.1](/python/docs/reference/spanner/3.50.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.46.0](/python/docs/reference/spanner/3.46.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.45.0](/python/docs/reference/spanner/3.45.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.44.0](/python/docs/reference/spanner/3.44.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.43.0](/python/docs/reference/spanner/3.43.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.42.0](/python/docs/reference/spanner/3.42.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.41.0](/python/docs/reference/spanner/3.41.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.40.1](/python/docs/reference/spanner/3.40.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.39.0](/python/docs/reference/spanner/3.39.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.38.0](/python/docs/reference/spanner/3.38.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.37.0](/python/docs/reference/spanner/3.37.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.36.0](/python/docs/reference/spanner/3.36.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.35.1](/python/docs/reference/spanner/3.35.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.34.0](/python/docs/reference/spanner/3.34.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.33.0](/python/docs/reference/spanner/3.33.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.32.0](/python/docs/reference/spanner/3.32.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.31.0](/python/docs/reference/spanner/3.31.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.30.0](/python/docs/reference/spanner/3.30.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.29.0](/python/docs/reference/spanner/3.29.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.28.0](/python/docs/reference/spanner/3.28.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.27.1](/python/docs/reference/spanner/3.27.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.26.0](/python/docs/reference/spanner/3.26.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.25.0](/python/docs/reference/spanner/3.25.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.24.0](/python/docs/reference/spanner/3.24.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.23.0](/python/docs/reference/spanner/3.23.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.22.2](/python/docs/reference/spanner/3.22.2/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.21.0](/python/docs/reference/spanner/3.21.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.20.0](/python/docs/reference/spanner/3.20.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.19.0](/python/docs/reference/spanner/3.19.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.18.0](/python/docs/reference/spanner/3.18.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.17.0](/python/docs/reference/spanner/3.17.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.16.0](/python/docs/reference/spanner/3.16.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.15.1](/python/docs/reference/spanner/3.15.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.14.1](/python/docs/reference/spanner/3.14.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.13.0](/python/docs/reference/spanner/3.13.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.12.1](/python/docs/reference/spanner/3.12.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.11.1](/python/docs/reference/spanner/3.11.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.10.0](/python/docs/reference/spanner/3.10.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.9.0](/python/docs/reference/spanner/3.9.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.8.0](/python/docs/reference/spanner/3.8.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.7.0](/python/docs/reference/spanner/3.7.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.6.0](/python/docs/reference/spanner/3.6.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.5.0](/python/docs/reference/spanner/3.5.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.4.0](/python/docs/reference/spanner/3.4.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.3.0](/python/docs/reference/spanner/3.3.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.2.0](/python/docs/reference/spanner/3.2.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.1.0](/python/docs/reference/spanner/3.1.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [3.0.0](/python/docs/reference/spanner/3.0.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [2.1.1](/python/docs/reference/spanner/2.1.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [2.0.0](/python/docs/reference/spanner/2.0.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.19.3](/python/docs/reference/spanner/1.19.3/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.18.0](/python/docs/reference/spanner/1.18.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.17.1](/python/docs/reference/spanner/1.17.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.16.0](/python/docs/reference/spanner/1.16.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.15.1](/python/docs/reference/spanner/1.15.1/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.14.0](/python/docs/reference/spanner/1.14.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.13.0](/python/docs/reference/spanner/1.13.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.12.0](/python/docs/reference/spanner/1.12.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.11.0](/python/docs/reference/spanner/1.11.0/google.cloud.spanner_v1.types.TransactionOptions)\n- [1.10.0](/python/docs/reference/spanner/1.10.0/google.cloud.spanner_v1.types.TransactionOptions) \n\n TransactionOptions(mapping=None, *, ignore_unknown_fields=False, **kwargs)\n\nOptions to use for transactions.\n\nThis message has `oneof`_ fields (mutually exclusive fields).\nFor each oneof, at most one member field can be set at the same time.\nSetting any member of the oneof automatically clears all other\nmembers.\n\n.. _oneof: \u003chttps://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields\u003e\n\nClasses\n-------\n\n### IsolationLevel\n\n IsolationLevel(value)\n\n`IsolationLevel` is used when setting `isolation_level` for a\ntransaction. \n\n If the value is not specified, the `SERIALIZABLE`\n isolation level is used.\n SERIALIZABLE (1):\n All transactions appear as if they executed\n in a serial order, even if some of the reads,\n writes, and other operations of distinct\n transactions actually occurred in parallel.\n Spanner assigns commit timestamps that reflect\n the order of committed transactions to implement\n this property. Spanner offers a stronger\n guarantee than serializability called external\n consistency. For further details, please refer\n to\n https://cloud.google.com/spanner/docs/true-time-external-consistency#serializability.\n REPEATABLE_READ (2):\n All reads performed during the transaction observe a\n consistent snapshot of the database, and the transaction is\n only successfully committed in the absence of conflicts\n between its updates and any concurrent updates that have\n occurred since that snapshot. Consequently, in contrast to\n `SERIALIZABLE` transactions, only write-write conflicts\n are detected in snapshot transactions.\n\n This isolation level does not support Read-only and\n Partitioned DML transactions.\n\n When `REPEATABLE_READ` is specified on a read-write\n transaction, the locking semantics default to\n `OPTIMISTIC`.\n\n### PartitionedDml\n\n PartitionedDml(mapping=None, *, ignore_unknown_fields=False, **kwargs)\n\nMessage type to initiate a Partitioned DML transaction.\n\n### ReadOnly\n\n ReadOnly(mapping=None, *, ignore_unknown_fields=False, **kwargs)\n\nMessage type to initiate a read-only transaction.\n\nThis message has `oneof`_ fields (mutually exclusive fields).\nFor each oneof, at most one member field can be set at the same time.\nSetting any member of the oneof automatically clears all other\nmembers.\n\n.. _oneof: \u003chttps://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields\u003e\n\n### ReadWrite\n\n ReadWrite(mapping=None, *, ignore_unknown_fields=False, **kwargs)\n\nMessage type to initiate a read-write transaction. Currently\nthis transaction type has no options."]]