有没有办法在php中独立设置隔离级别到具体的数据库驱动程序? 看起来没有。
答案 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集成。