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