通过PDO或Zend_Db_Adapter_Abstract设置隔离级别?

时间:2012-04-07 20:56:02

标签: php pdo zend-db

有没有办法在php中独立设置隔离级别到具体的数据库驱动程序? 看起来没有。

1 个答案:

答案 0 :(得分: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。

Zend_Db API似乎没有实现管理事务隔离级别的方法,唯一的方法是编写自己的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

有关使用Doctrine进行事务管理的更多信息,请参阅this question以了解如何将Doctrine与ZF和this page集成。

相关问题