【发布时间】:2012-04-07 20:56:02
【问题描述】:
有没有办法为 php 中的具体数据库驱动程序独立设置隔离级别? 好像没有。
【问题讨论】:
有没有办法为 php 中的具体数据库驱动程序独立设置隔离级别? 好像没有。
【问题讨论】:
不幸的是,我不确定是否有办法使用 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 进行事务管理的更多信息。
【讨论】: