2012-04-07 2 views

ответ

2

К сожалению, я не уверен, что есть способ сделать это с Zend_Db. В руководстве указано, что setTransactionIsolationLevel() может использоваться только с Microsoft SQL Server adapter.

Вы можете использовать setTransactionIsolationLevel() для установки уровня изоляции для текущего соединения . Значение может быть SQLSRV_TXN_READ_UNCOMMITTED, SQLSRV_TXN_READ_COMMITTED, SQLSRV_TXN_REPEATABLE_READ, SQLSRV_TXN_SNAPSHOT или SQLSRV_TXN_SERIALIZABLE.

Не похоже, что API Zend_Db реализует способ управления уровня изоляции транзакций, единственный способ - написать свои собственные инструкции SQL и выполнить их в соответствии с используемым драйвером PDO.

Я бы рекомендовал вам использовать лучший уровень абстракции базы данных, такой как Doctrine (действительно мощный). Тогда вы могли бы сделать это следующим образом:

Doctrine\DBAL\Connection также методы контроля уровня изоляции транзакций , как поддерживается основной базой данных. Connection#setTransactionIsolation($level) и Connection#getTransactionIsolation() может использоваться для этой цели. В возможных уровней изоляции представлены следующие константы:

<?php 
Connection::TRANSACTION_READ_UNCOMMITTED 
Connection::TRANSACTION_READ_COMMITTED 
Connection::TRANSACTION_REPEATABLE_READ 
Connection::TRANSACTION_SERIALIZABLE 

См this question знать, как интегрировать Doctrine с ZF и this page для получения дополнительной информации об управлении транзакциями с помощью доктрины.

Смежные вопросы