[pgsql-jp: 36112] Re: psqlメタコマンドとトランザクション
Kiyoshi Mizuno
kiyoshi_mizuno @ mail.toyota.co.jp
2005年 10月 12日 (水) 16:58:46 JST
水野です。
> -----Original Message-----
> メタコマンドの実行は別物として動作するのでしょうか?
この動きがあるべき動作なのかは別にして、
後ろに続くのがメタコマンドの場合は”;”がなくても
トランザクションが開始される、というかメタコマンド経由で
実行したコマンドはキー入力と独立したトランザクションとして
扱われているようです。(検証に使ったのは Windows版8.0.3)
【実験 その1】
−−−−ここから−−−−ここから−−−−
template1=# begin ←”;”なしでbeginをタイプ
template1-# \d ←メタコマンド実行
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+------------------+----------+----------
public | geometry_columns | テーブル | postgres
public | pg_logdir_ls | ビュー | postgres
public | spatial_ref_sys | テーブル | postgres
(3 行)
template1-# ; ←beginを完結させる目的で”;”をタイプ
WARNING: there is already a transaction in progress
BEGIN ↑もう始まった事になっている
template1=#
−−−−ここまで−−−−ここまで−−−−
【実験 その2】
−−−−ここから−−−−ここから−−−−
template1=# begin
template1-# \d
リレーションの一覧
スキーマ | 名前 | 型 | 所有者
----------+------------------+----------+----------
public | geometry_columns | テーブル | postgres
public | pg_logdir_ls | ビュー | postgres
public | spatial_ref_sys | テーブル | postgres
(3 行)
template1-# select * from pg_logdir_ls; ←”;”でなく通常のSQLを入力してみる
ERROR: syntax error at or near "select" at character 7
行 2: select * from pg_logdir_ls;
^ ←SELECTのSのところを指してます
template1=# end;
WARNING: there is no transaction in progress ←今回の場合トランザクションは開始されていない。
COMMIT
template1=#
−−−−ここまで−−−−ここまで−−−−
pgsql-jp メーリングリストの案内