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