Spec-Zone.ru › Yii 2.0

Класс yii\db\Transaction

Все классы | Свойства | Методы | Константы
Наследование yii\db\Transaction » yii\base\Object
Реализует yii\base\Configurable
Доступна с версии 2.0
Исходный код https://github.com/yiisoft/yii2/blob/master/framework/db/Transaction.php

Transaction представляет транзакцию БД.

Обычно создается путем вызова yii\db\Connection::beginTransaction().

Следующий код — типичный пример использования транзакций (обратите внимание, что некоторые СУБД могут не поддерживать транзакции):

$transaction = $connection->beginTransaction();
try {
    $connection->createCommand($sql1)->execute();
    $connection->createCommand($sql2)->execute();
    //.... other SQL executions
    $transaction->commit();
} catch (\Exception $e) {
    $transaction->rollBack();
    throw $e;
} catch (\Throwable $e) {
    $transaction->rollBack();
    throw $e;
}

Примечание: в приведенном выше коде у нас есть два блока catch для совместимости с PHP 5.x и PHP 7.x. \Exception реализует \Throwable интерфейс начиная с PHP 7.0, поэтому вы можете пропустить часть с \Exception если ваше приложение использует только PHP 7.0 и выше.

Открытые свойства

Свойство Тип Описание Определено в
$db yii\db\Connection Подключение к базе данных, с которым связана эта транзакция. yii\db\Transaction
$isActive boolean Активна ли эта транзакция. yii\db\Transaction
$isolationLevel string Уровень изоляции транзакции для этой транзакции. yii\db\Transaction
$level integer Текущий уровень вложенности транзакции. yii\db\Transaction

Открытые методы

Метод Описание Определено в
__call() Вызывает метод, который не является методом класса. yii\base\Object
__construct() Конструктор. yii\base\Object
__get() Возвращает значение свойства объекта. yii\base\Object
__isset() Проверяет, установлено ли свойство, т. е. определено и не равно null. yii\base\Object
__set() Устанавливает значение свойства объекта. yii\base\Object
__unset() Устанавливает свойство объекта в null. yii\base\Object
begin() Начинает транзакцию. yii\db\Transaction
canGetProperty() Возвращает значение, указывающее, может ли свойство быть прочитано. yii\base\Object
canSetProperty() Возвращает значение, указывающее, может ли свойство быть установлено. yii\base\Object
className() Возвращает полное имя этого класса. yii\base\Object
commit() Завершает транзакцию. yii\db\Transaction
getIsActive() Возвращает значение, указывающее, активна ли эта транзакция. yii\db\Transaction
getLevel() yii\db\Transaction
hasMethod() Возвращает значение, указывающее, определен ли метод. yii\base\Object
hasProperty() Возвращает значение, указывающее, определено ли свойство. yii\base\Object
init() Инициализирует объект. yii\base\Object
rollBack() Откатывает транзакцию. yii\db\Transaction
setIsolationLevel() Устанавливает уровень изоляции транзакции для этой транзакции. yii\db\Transaction

Константы

Константа Значение Описание Определено в
READ_COMMITTED 'READ COMMITTED' Константа, представляющая уровень изоляции транзакции READ COMMITTED. yii\db\Transaction
READ_UNCOMMITTED 'READ UNCOMMITTED' Константа, представляющая уровень изоляции транзакции READ UNCOMMITTED. yii\db\Transaction
REPEATABLE_READ 'REPEATABLE READ' Константа, представляющая уровень изоляции транзакции REPEATABLE READ. yii\db\Transaction
SERIALIZABLE 'SERIALIZABLE' Константа, представляющая уровень изоляции транзакции SERIALIZABLE. yii\db\Transaction

Подробности свойств

$db открытое свойство

Подключение к базе данных, с которым связана эта транзакция.

public yii\db\Connection $db = null

$isActive открытое только для чтения свойство

Активна ли эта транзакция. Только активная транзакция может commit() или rollBack().

public boolean getIsActive ( )

$isolationLevel открытое только для записи свойство

Уровень изоляции транзакции для этой транзакции. Может быть одним из READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ и SERIALIZABLE, а также строкой, содержащей синтаксис, специфичный для СУБД, который используется после SET TRANSACTION ISOLATION LEVEL.

public void setIsolationLevel ( $level )

$level открытое только для чтения свойство

Текущий уровень вложенности транзакции.

public integer getLevel ( )

Подробности методов

begin() public method

Начинает транзакцию.

public void begin ( $isolationLevel = null )
$isolationLevel string|null

Уровень изоляции для этой транзакции. Может быть одним из значений READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ и SERIALIZABLE, а также строкой, содержащей синтаксис, специфичный для СУБД, используемый после SET TRANSACTION ISOLATION LEVEL. Если не указано (null), уровень изоляции не будет явно задан, и будет использован значение по умолчанию СУБД.

Примечание: Это значение не работает для PostgreSQL, где установка уровня изоляции до начала транзакции не имеет эффекта. В этом случае необходимо вызвать setIsolationLevel() после начала транзакции.

Примечание: Некоторые СУБД позволяют установить уровень изоляции только для всего соединения, поэтому последующие транзакции могут получить тот же уровень изоляции, даже если вы его не указали. При использовании этой функции вам может потребоваться явно установить уровень изоляции для всех транзакций, чтобы избежать конфликтов настроек. На момент написания этой документации это касается MSSQL и SQLite.

throws yii\base\InvalidConfigException

если $db null.

commit() public method

Подтверждает транзакцию.

public void commit ( )
throws yii\db\Exception

если транзакция не активна

getIsActive() public method

Возвращает значение, указывающее, активна ли эта транзакция.

public boolean getIsActive ( )
return boolean

Активна ли эта транзакция. Только активная транзакция может подтвердить() или отменить().

getLevel() public method (доступно начиная с версии 2.0.8)

public integer getLevel ( )
return integer

Текущий уровень вложенности транзакции.

rollBack() public method

Отменяет транзакцию.

public void rollBack ( )
throws yii\db\Exception

если транзакция не активна

setIsolationLevel() public method

Устанавливает уровень изоляции транзакции для данной транзакции.

Этот метод может быть использован для установки уровня изоляции, когда транзакция уже активна. Однако это не поддерживается всеми СУБД, поэтому вы можете указать уровень изоляции непосредственно при вызове begin().

См. также http://en.wikipedia.org/wiki/Isolation_(database_systems)#Isolation_levels.

public void setIsolationLevel ( $level )
$level string

Уровень изоляции транзакции. Может быть одним из значений READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ и SERIALIZABLE, а также строкой, содержащей синтаксис, специфичный для СУБД, используемый после SET TRANSACTION ISOLATION LEVEL.

throws yii\db\Exception

если транзакция не активна

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-db-transaction.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API