[pgsql-jp: 27958] Re: view/rule/insert

Jun Kitamura kitamura @ zoozee.jp
2002年 11月 13日 (水) 00:12:29 JST


北村@zoozee です。

> > そもそも、参照先にソレが無ければダメだ、という制約のために外
> > 部参照キー付けてるんですよね?(やろうとしてることが矛盾して
> > ない?)
> 
> 参照先が無ければダメなのはその通りなのですが、基本的にINSERTのときに参照
> 先が無い、ということは想定されてません。「無ければ作る」。

「作るタイミング」の問題が言いたかったのです。

ケースバイケースなので、今回の永安さんのやろうとしていること
の場合、それで良いのかもしれません。

業務システムなどで支払伝票(t1)と取引先マスタ(c1)などの関係だ
と、支払伝票にデータを入れようとした時に取引先マスタに無い取
引先だからといって、勝手に取引先マスタに追加しちゃったりする
のは、何かとマズイです。取引先マスタに新規取引先を追加して(
当然、経理部などのチェックを経て登録完了して)から、支払伝票
にデータを入れる、というプロセスになります。

支払伝票VIEW に支払データと取引先名を INSERT する形で、取引
先マスタにその名称が無ければ新規取引先として取引先名をマスタ
に追加しちゃえば良いじゃんか(取引先コードとかはserialで持つ
とか)、というのが今回のやり方です。
が、これだと、ユーザーが入力する取引先名の中に・(点)が有った
り無かったり、全角だったり半角だったり、株式会社が付いていた
り付いていなかったり・・・と、取引先マスタの名称と一致してい
ないけど、過去に既存の取引先だった・・・なんてことになっちゃ
います。

「参照先を先に作る」というスタンスを強制するために外部参照制
約を使っていたので「無ければ(その場で)作る」なら、外部参照す
る必要なんて無いじゃん、と思ったのです。
繰り返しですが、ケースバイケースです。:-)





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