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