[pgsql-jp: 35528] Re: Re^2: データベース毎に autocommit on/off
Kazumasa Gotoh
kgotoh @ cic-kk.co.jp
2005年 6月 20日 (月) 17:33:11 JST
From: hogehoge <kazubonbonk @ yahoo.co.jp>
Date: Mon, 20 Jun 2005 17:01:00 +0900 (JST)
> DBIで、芸当が出来るとは知りませんでした。
> 色々と調べてみます。
psql を使う場合は \set コマンドで DB セションごとに autcommit の
On/Off が指定できます。
例えば、以下のように実行可能です。\set コマンドは psql の内部コマンド
なので、外部アプリからこれをそのまま指定することはできませんが、
\set コマンドが内部的に何をしているのかを調べれば、DBI を使わずとも
実行可能でしょう。DBI も結局同じことをしているのだと思います。
まぁ、Perl を使うのであれば DBI を使った方が楽なんでしょうけど。
kgotoh=> \set
VERSION = 'PostgreSQL 8.0.2 on i386-unknown-freebsd5.3, compiled by GCC gcc (GCC) 3.4.2 [FreeBSD] 20040728'
AUTOCOMMIT = 'on'
(snip)
kgotoh=> \set AUTOCOMMIT off
kgotoh=> \set
VERSION = 'PostgreSQL 8.0.2 on i386-unknown-freebsd5.3, compiled by GCC gcc (GCC) 3.4.2 [FreeBSD] 20040728'
AUTOCOMMIT = 'off'
(snip)
kgotoh=> create table test (count int);
CREATE TABLE
kgotoh=> insert into test values(1);
INSERT 17246 1
kgotoh=> insert into test values(2);
INSERT 17247 1
kgotoh=> commit;
COMMIT
kgotoh=> insert into test values(3);
INSERT 17248 1
kgotoh=> insert into test values(4);
INSERT 17249 1
kgotoh=> select * from test;
count
-------
1
2
3
4
(4 rows)
kgotoh=> rollback;
ROLLBACK
kgotoh=> select * from test;
count
-------
1
2
(2 rows)
kgotoh=>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
(株) セントラル情報センター
後藤和政 kgotoh @ cic-kk.co.jp
pgsql-jp メーリングリストの案内