[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 メーリングリストの案内