pq\Result docs
[mdref/mdref-pq] / pq / Connection / startTransaction.md
1 # pq\Transaction pq\Connection::startTransaction([int $isolation = pq\Transaction::READ_COMMITTED[, bool $readonly = FALSE[, bool $deferrable = FALSE]]])
2
3 Begin a transaction.
4
5 ## Params:
6
7 * Optional int $isolation = pq\Transaction::READ_COMMITTED
8 Any pq\Transaction isolation level constant
9 (defaults to pq\Connection::$defaultTransactionIsolation).
10 * Optional bool $readonly = FALSE
11 Whether the transaction executes only reads
12 (defaults to pq\Connection::$defaultTransactionReadonly).
13 * Optional bool $deferrable = FALSE
14 Whether the transaction is deferrable
15 (defaults to pq\Connection::$defaultTransactionDeferrable).
16
17 > ***NOTE:***
18 A transaction can only be deferrable if it also is readonly and serializable.
19 See the official [PostgreSQL documentaion](http://www.postgresql.org/docs/current/static/sql-set-transaction.html) for further information.
20
21 ## Returns:
22
23 * pq\Transaction, a begun transaction instance.
24
25 ## Throws:
26
27 * pq\Exception\InvalidArgumentException
28 * pq\Exception\BadMethodCallException
29 * pq\Exception\RuntimeException
30
31
32 ## Example:
33
34 <?php
35
36 $transaction = (new pq\Connection)->startTransaction(
37 pq\Transaction::SERIALIZABLE, true, true);
38 $result = $transaction->connection->exec(
39 "SELECT * FROM generate_series(1,3)");
40
41 ?>