2

当我$this->db->trans_start();在 CodeIgniter 中使用时,它会启动一个具有已提交读隔离级别的事务。我想改用可序列化的隔离级别,但trans_start似乎不允许我设置它。

如何在 CodeIgniter 中设置事务的事务级别?

4

2 回答 2

4

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;在事务开始后立即在查询中使用:

$this->db->trans_start();
$this->db->query('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;');
于 2013-10-09T13:54:06.533 回答
-1

根据mysql文档

我认为SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE如果您想在交易期间这样做,您应该使用

要不然

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE并在开始交易之前设置它,如下所示:

$this->db->query('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;');
$this->db->trans_start();

这是来自文档的复制粘贴:

使用 GLOBAL 关键字,该语句为所有后续会话全局设置默认事务级别。现有会话不受影响。

使用 SESSION 关键字,该语句为当前会话中执行的所有后续事务设置默认事务级别。

如果没有任何 SESSION 或 GLOBAL 关键字,该语句将为当前会话中执行的下一个(未启动的)事务设置隔离级别。

存在活动事务时,不允许设置没有 GLOBAL 或 SESSION 的 SET TRANSACTION ISOLATION LEVEL

于 2014-05-19T14:58:09.020 回答