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