当我$this->db->trans_start();
在 CodeIgniter 中使用时,它会启动一个具有已提交读隔离级别的事务。我想改用可序列化的隔离级别,但trans_start
似乎不允许我设置它。
如何在 CodeIgniter 中设置事务的事务级别?
当我$this->db->trans_start();
在 CodeIgniter 中使用时,它会启动一个具有已提交读隔离级别的事务。我想改用可序列化的隔离级别,但trans_start
似乎不允许我设置它。
如何在 CodeIgniter 中设置事务的事务级别?
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
在事务开始后立即在查询中使用:
$this->db->trans_start();
$this->db->query('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;');
根据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