2013-10-09 51 views
2

當我在CodeIgniter中使用$this->db->trans_start();時,它使用讀提交隔離級別啓動一個事務。我想使用可序列化的隔離級別,但trans_start似乎不允許我設置它。如何更改CodeIgniter中事務的隔離級別?

如何在CodeIgniter中設置事務的事務級別?

回答

3

使用SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;在查詢交易開始後右:

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

mysql docs

我認爲你應該使用SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE如果你想在交易過程中做到這一點

否則

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE並將其設置爲開始交易是這樣的:

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

下面是從文檔複製粘貼:

隨着全球關鍵字,語句接下來的所有會話的默認事務 全球水平。現有會議 不受影響。

使用SESSION關鍵字,語句爲當前 會話中執行的所有後續事務設置默認事務 級別。

如果沒有任何SESSION或GLOBAL關鍵字,語句會爲當前會話中執行的下一個(未啓動)事務 設置隔離級別 。沒有全局或會話

SET事務隔離級別是不是允許 而有活躍的交易

+0

我試圖左右逢源,並將其設置** **之前的交易並沒有爲我工作。也許交易開始一個新的會議? 使用SET SESSION,在**開始事務之後,只需設置**即可正常工作。 – franer