The representation of a Cloud Spanner transaction.
A transaction is a set of reads and writes that execute atomically at a single logical point in time across the columns/rows/tables in a database. Those reads and writes are grouped by passing them the same Transaction.
All reads/writes in the transaction must be executed within the same session, and that session may have only one transaction active at a time.
Spanner supports these transaction modes:
ReadOnly. Provides guaranteed consistency across several reads, but does not allow writes. Can be configured to read at timestamps in the past. Does not need to be committed and does not take locks.
ReadWrite. Supports reading and writing data at a single point in time. Uses pessimistic locking and, if necessary, two-phase commit. May abort, requiring the application to rerun.
SingleUse. A restricted form of a ReadOnly transaction where Spanner chooses the read timestamp.
Constructors
Transaction(ReadOnlyOptions)
Construction of read-only and read-write transactions.
Parameter
Name
Description
opts
ReadOnlyOptions
Transaction(ReadWriteOptions)
Construction of read-only and read-write transactions.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-22 UTC."],[[["\u003cp\u003eThis document details the \u003ccode\u003eTransaction\u003c/code\u003e class within the Google Cloud Spanner C++ library, specifically referencing version 2.17.0, with links provided for versions from 2.11.0 up to the 2.37.0-rc release.\u003c/p\u003e\n"],["\u003cp\u003eA Spanner transaction is a set of atomic operations (reads and writes) that occur across a database, all within a single session, which can only have one active transaction at any time.\u003c/p\u003e\n"],["\u003cp\u003eSpanner supports three transaction modes: \u003ccode\u003eReadOnly\u003c/code\u003e (for consistent reads without writes), \u003ccode\u003eReadWrite\u003c/code\u003e (for both reads and writes), and \u003ccode\u003eSingleUse\u003c/code\u003e (a \u003ccode\u003eReadOnly\u003c/code\u003e mode where Spanner determines the read timestamp).\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eTransaction\u003c/code\u003e class provides constructors for \u003ccode\u003eReadOnly\u003c/code\u003e and \u003ccode\u003eReadWrite\u003c/code\u003e modes, and no RPCs are made when creating the \u003ccode\u003eTransaction\u003c/code\u003e object; they are made upon the first request to the server, such as within an \u003ccode\u003eExecuteQuery()\u003c/code\u003e call.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eTransaction\u003c/code\u003e class also supports standard value type operations, such as copy, assign, and move, with corresponding constructors and assignment operators provided.\u003c/p\u003e\n"]]],[],null,[]]