[pgsql-jp: 36766] Re: シェルにおけるトランザクション

EBIHARA, Yuichiro ebihara @ iplocks.co.jp
2006年 2月 23日 (木) 19:08:04 JST


こんにちは、海老原です。

> >#!bin/sh
> >psql -c "update..." データベース名
> >のような感じです。
> >テーブルの更新等はできるのですが,トランザクションの方法がわからなくて困
> >っています。
> psql 経由でSQLを実行していますよね?
> ということは、psqlが終了するとともにpostgresへの接続は終了してしまいます。
> 多分、終了時はcommitがかかったと思いますが。
> 
> もしやるのであれば、pg/plsqlで書いて、シェルから実行するけど、commitか
> rollbackかの
> 判断及び処理は、その中で行うようにするしかないと思います。

これじゃだめですか?

psql データベース名 << EOF
begin;
update ...;
 :
commit;
EOF

条件によってSQL文を変えたいなら、

echo "begin;" > ファイル名
echo "update...;" >> ファイル名
 :
echo "commit;" >> ファイル名

psql データベース名 < ファイル名

とか。

--
アイピーロックス ジャパン株式会社

海老原 雄一郎 / EBIHARA, Yuichiro
  Email: ebihara @ iplocks.co.jp





pgsql-jp メーリングリストの案内