[pgsql-jp: 36154] Re: psqlメタコマンドとトランザクション

Kiyoshi Mizuno kiyoshi_mizuno @ mail.toyota.co.jp
2005年 10月 17日 (月) 08:24:57 JST


水野です。

> -----Original Message-----
> template1-# ;		←beginを完結させる目的で”;”をタイプ
> WARNING:  there is already a transaction in progress
> BEGIN			↑もう始まった事になっている

自分でもどうやって起こしたか分からなかったこの現象ですが
再インストールするなど試行錯誤した結果、起こし方が分かりました。
最初に「begin」をタイプする際、「begin」とだけタイプするか、
「begin 」と後ろに余分な空白がついているかの違いでした。
「begin ;」(beginと;の間にブランクあり)とタイプしたときには
ちゃんとトランザクションが開始されるので、なぜこれが今回の
ような動作の違いを引き起こしたのかは分かりませんが。

【正しく動作する場合】
template1=# begin	←「begin」と無駄なくタイプ
template1-# \d
                リレーションの一覧
 スキーマ |       名前       |    型    |  所有者
----------+------------------+----------+----------
 public   | geometry_columns | テーブル | postgres
 public   | pg_logdir_ls     | ビュー   | postgres
 public   | spatial_ref_sys  | テーブル | postgres
(3 行)

template1-# ;
BEGIN		←期待通り正常にトランザクション開始
template1=#

【正しく動作しない場合】
template1=# begin	←「begin 」と後ろに半角ブランクを付けてタイプ
template1-# \d
                リレーションの一覧
 スキーマ |       名前       |    型    |  所有者
----------+------------------+----------+----------
 public   | geometry_columns | テーブル | postgres
 public   | pg_logdir_ls     | ビュー   | postgres
 public   | spatial_ref_sys  | テーブル | postgres
(3 行)

template1-# ;
WARNING:  there is already a transaction in progress
BEGIN		↑狙い通りのメッセージ出力
template1=#





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