2

CodeIgniter で使用する$this->db->trans_start();と、read commit 分離レベルでトランザクションが開始されます。代わりにシリアル化可能な分離レベルを使用したいのですが、trans_startこれを設定できないようです。

CodeIgniter でトランザクションのトランザクション レベルを設定するにはどうすればよいですか?

4

2 に答える 2

-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 に答える