[Codeigniter-users] トランザクションのテストモードについて

Back to archive index

Taro Yamashita taro****@panth*****
2009年 8月 31日 (月) 18:14:35 JST


いつもお世話になっております。
Taroと申します。

PHP      : 5.2.6
MySQL    : 5.0
CI       : 1.7.1
DB-driver: mysqli

上記の環境で、トランザクションを利用した
DB操作を行いたいので、ユーザーガイドを参考に
以下のようなコードを実行してみました。

<?php

class Top extends Controller
{
    public function __construct()
    {
        parent::Controller();
    }

    public function index()
    {
        $this->load->database();
        $this->db->trans_start(TRUE);
        $this->db->query("INSERT INTO test(Entry) VALUES ('foobar')");
        $this->db->trans_complete();
    }
}
?>

CREATE TABLE test (
  Id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  Entry TEXT NOT NULL,
  PRIMARY KEY(Id)
) ENGINE = INNODB DEFAULT CHARSET = utf8


trans_start()の引数にTRUEを設定すると、クエリの
成否に関わらずロールバックされるとあるのですが、

$this->db->trans_complete();

した時点で、ロールバックされずにコミットされて
しまいます。

http://codeigniter.com/bug_tracker/bug/4339/

本家サイトの上記URLに投稿されているコードを追加
するとtrans_complete()を実行してもロールバックして
くれるのですが、対策はこれで良いのでしょうか??

アドバイスいただけますと幸いです。

Taro




Codeigniter-users メーリングリストの案内
Back to archive index