[PHP-users 5573] Re: トランザクションについて。

Shigeki Mimura php-users@php.gr.jp
Wed, 20 Feb 2002 12:58:36 +0900 (JST)


三村です。

kaga> シーラカンス(PostgreSQL)の本を購入してみます。
kaga> 貴重なアドバイスを参考にして、作成したいと思います。

あとPostgreSQLのソースにに附属のドキュメントは非常に参考になりますよ。
翻訳されたものが、
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/
から、印刷物であれば
PostgreSQL オフィシャルマニュアル ISBN-4-8443-1589-7
があります。

ただ、トランザクションに関してはBEGINで始まってCOMMIT,もしくはROLLBACKで終了させる
と言うだけだと思います。
PHPの中でどこまで有効かと言うと、pg_connect()kde接続してpg_close()で接続を
閉じるまでの間であれば、どの時点でもBEGINで始まってCOMMITで終るqueryをおくれば
良いだけです。

$conn=pg_connect("host=dbhost user=dbuser password=password dbname=dbname port=5432");
$query="BEGIN;
INSERT INTO  ....
COMMIT;";
$result=pg_exec($conn,$query);
pg_close($conn);

と言うような形でも良いでしょうし,

$conn=pg_connect("host=dbhost user=dbuser password=password dbname=dbname port=5432");
$query="BEGIN;";
$result=pg_exec($conn,$query);
$query="INSRET INTO ....;";
$result=pg_exec($conn,$query);
$query="COMMIT;";
$result=pg_exec($conn,$query);
pg_close($conn);

というふうにしても同様の結果を得られます。