有没有办法为php中的具体数据库驱动程序独立设置隔离级别?好像没有。
1 回答
不幸的是,我不确定是否有办法用 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 进行事务管理的更多信息。