当我在CodeIgniter中使用$this->db->trans_start();
时,它会以读取已提交的隔离级别启动事务。我想使用可序列化的隔离级别,但trans_start
似乎不允许我设置它。
如何在CodeIgniter中设置事务的事务级别?
答案 0 :(得分:3)
在交易开始后立即在查询中使用SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
:
$this->db->trans_start();
$this->db->query('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;');
答案 1 :(得分:0)
如果您想在交易期间执行此操作,我认为您应该使用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不是 在有活动交易时允许