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