1

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

4

1 回答 1

2

不幸的是,我不确定是否有办法用 Zend_Db 做这样的事情。手册说setTransactionIsolationLevel()只能与Microsoft SQL Server 适配器一起使用。

您可以使用 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 与 ZF 集成,以及此页面以获取有关使用 Doctrine 进行事务管理的更多信息。

于 2012-04-08T05:02:13.290 回答