MongoDB\Driver\Session::startTransaction

Starts a transaction

&reftitle.description; final public `void` `MongoDB\Driver\Session::startTransaction` ``array``null```options`&null;

Starts a multi-document transaction associated with the session. At any given time, you can have at most one open transaction for a session. After starting a transaction, the session object must be passed to each operation via the `"session"` option (e.g. `MongoDB\Driver\Manager::executeBulkWrite`) in order to associate that operation with the transaction.

Transactions can be committed through `MongoDB\Driver\Session::commitTransaction`, and aborted with `MongoDB\Driver\Session::abortTransaction`. Transactions are also automatically aborted when the session is closed from garbage collection or by explicitly calling `MongoDB\Driver\Session::endSession`.

&reftitle.parameters;

`options`

- Options can be passed as argument to this method. Each element in this options array overrides the corresponding option from the `"defaultTransactionOptions"` option, if set when starting the session with `MongoDB\Driver\Manager::startSession`.

  ## options

  Option | Type | Description
  &mongodb.option.maxCommitTimeMS; &mongodb.option.readConcern; &mongodb.option.readPreference; &mongodb.option.writeConcern;

&reftitle.returnvalues;

&return.void;

&reftitle.errors;

&mongodb.throws.argumentparsing;
- Throws `MongoDB\Driver\Exception\CommandException` if the transaction could not be started because of a server-side problem (e.g. a lock could not be obtained).
- Throws `MongoDB\Driver\Exception\RuntimeException` if the transaction could not be started (e.g. a transaction was already started).

&reftitle.changelog;

&Version; | &Description;
PECL mongodb 1.6.0 | The `"maxCommitTimeMS"` option was added.

&reftitle.seealso;

- `MongoDB\Driver\Manager::startSession`
- `MongoDB\Driver\Session::commitTransaction`
- `MongoDB\Driver\Session::abortTransaction`