[pgsql-jp: 31551] Re: オラクルストアドからの移行

Ken-ichi Nakayama aguri @ ssl.fujitsu.com
2003年 11月 20日 (木) 12:35:47 JST


なかやまです。

On Thu, 20 Nov 2003 11:41:18 +0900
Tietew <tietew @ tietew.net> wrote:
tietew> 無意味な全文引用は止めましょう。

すみません。以後気をつけます。

tietew> > マニュアルの文脈からはどうも ほとんどの例外は
tietew> > 基本的にはPL/pgSQLレベルでトラップできないように
tietew> > 思えるのですが。
tietew> です。PL/pgSQL というか,PostgreSQL の言語プロシージャがそもそも
tietew> 例外のトラップをサポートしていないようですし,PostgreSQL のトラ
tietew> ンザクション自体,例外からの復旧が不可能です。(一度エラーが起こ
tietew> るとトランザクションが ABORT 状態になってしまい,同じトランザク
tietew> ション内で発行できる SQL は ABORT(ROLLBACK) 以外に無くなる)

やっぱり。例外に対する状態遷移が、他の多くの実装と異なるのですね。

tietew> 例えば INSERT で重複キー例外をトラップして UPDATE に切り替えるこ
tietew> とはできません。LOCK TABLE 〜 IN EXCLUSIVE MODE してから SELECT 〜 
tietew> FOR UPDATE でキーの存在を確認しなければなりません。PostgreSQL で
tietew> は EXCLUSIVE MODE でロックしても FOR UPDATE の付かない SELECT は
tietew> ブロックされないので,パフォーマンス的にはあまり問題ではないかと。

パフォーマンス的な問題は書き方でなんとかなるとしても、
それらの書き直しが結構負担の大きい作業になりますよね。
最初に質問した方のような移行ニーズにはかなりリスクが
高いですよね。


-- 
中山 賢一  aguri @ ssl.fujitsu.com   『信頼と技術で応える SSL』
株式会社富士通ソーシアルサイエンスラボラトリ (富士通SSL)
第二事業本部 ビジネス基盤センター 企画部  [Corp-Web] http://www.ssl.fujitsu.com
TEL: 044-739-1561(内線:3612)  FAX: 044-739-1548




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