[PHP-users 14877]Re: [PHP-users14665]PEARでクエリが実行されるときとされない時がある

Osamu Shigematsu m5issige @ mr.hitachi-medical.co.jp
2003年 4月 24日 (木) 16:38:26 JST


重松です。こんにちは。

やっと見つかりました。。。
http://pear.php.net/get/DB-1.4b1.tgz

で、コードをざっと眺めると、PostgreSQL の場合は、ですが、

	var $autocommit = true;

なる行がありまして、query は common.php で定義されているんですが、
変更されるかどうか (isManip) の判定などで、結局は、simpleQuery() を
呼び出すんですが、その中で:

            if ($this->transaction_opcount == 0) {
                $result = @pg_exec($this->connection, "begin;");
                if (!$result) {
                    return $this->pgsqlRaiseError();
                }
            }
            $this->transaction_opcount++;

という処理がありますね。

つまり、明示的に $autocommit を false にしない限り、
わざわざ BEGIN/COMMIT を明示しないでも良いということだと思います。

# やっぱり昔と同じだ。この辺。私はこれ大きなお世話の気がして嫌だった。

そして、無論、ROLLBACK するときも、rollback() を
使わないといけないですね。

最初から読んでないのでなんなんですが、
どうも、トランザクションが云々以前に、PEAR DB の使い方を
調べもせずに適当に使って、うまくいかないだけの気がしないでもないです。

-- 
Osamu Shigematsu <m5issige @ mr.hitachi-medical.co.jp>




PHP-users メーリングリストの案内