【问题标题】:set isolation level via PDO or Zend_Db_Adapter_Abstract?通过 PDO 或 Zend_Db_Adapter_Abstract 设置隔离级别?
【发布时间】:2012-04-07 20:56:02
【问题描述】:

有没有办法为 php 中的具体数据库驱动程序独立设置隔离级别? 好像没有。

【问题讨论】:

    标签: php pdo zend-db


    【解决方案1】:

    不幸的是,我不确定是否有办法使用 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
    

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

    【讨论】:

      猜你喜欢
      • 2016-05-12
      • 2018-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多