• ベストアンサー

同じデータベース内で値の参照

orangemikanの回答

  • ベストアンサー
回答No.1

そんなときこそトリガーがいいと思います。 ・B,C にInsert するファンクションを作ります。 ファンクション の中に Aの新しいデータをあらわす NEW を使います。 ・A のテーブルにInsert したときに起動するトリガーを作ります。 こんな方向でいかかでしょうか?

aiurai54
質問者

お礼

トリガーを使ったことがないので、勉強してみます。 ありがとうございます。

関連するQ&A

  • select insertで複数テーブルから値を取得したい

    環境:oracle9i select insertで、2つのテーブルから値を取得して、1つのテーブルにinsertすることは可能でしょうか? たとえば、以下の場合、どのようなSQL文を書けばよいか、アドバイスいただけますでしょうか。 よろしくお願いします。 insertしたいテーブル:A Aテーブルの項目:o,p,q,r,s,t 値を取得するテーブル:B,C Bテーブルの項目:o,p,q,r Cテーブルの項目:o,p,s,t oとpが主キーになっていて、それらが一致するBとCのデータを あわせて、Aにinsertしたいと思っています。 insert into A(o,p,q,r,s,t) select このあと、どのように書けばよいのかがわかりません。

  • テーブルにフィールド数以下の値を挿入しようとした時エラーが出ます

    テーブルのフィールド数が10あるとします。挿入したい値が3つしかないとします。 列名を指定せずに挿入するとします。 Insert Table Values('a','b','c') とやった時、フィールド数が足りませんといったようなエラーが表示されます。 列名を省略したやりかたでは、列名分の値を付け加える必要があるのでしょうか? 先頭の3フィールドのみにデータを追加したいと思うのですが、無理でしょうか?

  • ファイルメーカー ドロップダウンリスト 値参照と関連テーブル

    フィールドA+++フィールドB+++フィールドC (名前)    (役職)   (担当) ------------------------------------------ 長嶋       社長     長嶋 原               城島               王        専務     王 清原              長嶋 松井              城島 城島       部長     城島 松坂              長嶋  青木              王 ----------------------------------------- フィールドBは、ドロップダウンリストで、別テーブル(役職テーブル)の値を参照しています。 フィールドCを、役職に当たっている人だけ(長嶋・王・城島)のドロップダウンリストにするには、どうしたらよろしいでしょうか? 役職テーブルと上記テーブルの役職とをリンクさせる。 フィールドCをドロップダウンリストにし、値一覧で、フイールドの値を使用。 フィールド指定で、上記テーブルの(名前)を選択。 次のテーブルから関連テーブルの値のみ含める(役職テーブル) として、出来るかと思いましたが、出来ませんでした。 よろしく、お願いします。

  • 値が存在しない場合の処理について

    使用プログラム>>Access2000 上手く説明できないのですが、 テーブルAとBとの比較で、フィールド1とフィールド2がBの同じフィールドと一致したら、Bの合致したデータのField3と一致するテーブルCのデータを取得したいと思っています。 同時に、一致しなくても値を返して欲しいのですが、そのような事は可能でしょうか? 欲しいデータ:テーブルCのフィールド 条件1:テーブルAとBの共通フィールドの一致(AND) 条件2:テーブルBとテーブルCの共通フィールドの一致(条件1のフィールドとは別) 条件3:一致しない場合でも値が欲しい。 よろしくお願いします。

  • Accessで、マスター情報を参照して値を抽出したいがキーが数字範囲の場合

    いつも大変お世話になっております。m(_ _)m Accessの質問をさせてください。 マスタテーブルを作成し、マスタ情報を元に他テーブルで値を参照したいのですが、マスタのキーになるフィールドの情報が「数値範囲」の場合は、どのように参照できるのでしょうか? 例) 数字が 2~8の場合はA 9~15の場合はB 16~100の場合はC というようなマスタがあり、他テーブルの情報は (1)・・・5 (2)・・・12 (3)・・・80 という数値が入っています。 マスタ情報を参照して (1)・・・5/A (2)・・・12/B (3)・・・80/C というように参照したいのですが、マスタテーブルの作り方やクエリでの算出の仕方を教えてください。 2~8の場合は、2,3,4,5,6,7,8とすべてのパターンを作っておけばよいのでしょうが、もっと良い方法はありませんか? お手数おかけします。 よろしくお願いします。

  • アクセスで値を参照したい

    Win2000,Access2000を使用しています。 AB二つのテーブルに「仮番号」というフィールドがあり、同じ「仮番号」のレコードに同じ「伝票番号」をつけたいんです。 Aテーブル(お客様情報) Bテーブル(注文履歴) Aテーブルの「伝票番号」フィールドに番号を入力したら、BテーブルのAと同じ「仮番号」のレコードの「伝票番号」フィールドに番号が入力されるようにしたいのですが、どのようにVBまたは、フォーム上のテキストボックスのプロパティで組んだらよいのかわかりません。 Bテーブルには、過去の注文データもあるのですでに入力されているレコードには過去に受注した時の伝票番号入力されています。 新規入力したレコードに対してだけAと同じ伝票番号をつけたいのです。 Bテーブルで、         |商品名|価格  |伝票番号| 過去の受注データ|電卓 |¥500|1000  | 今回の受注データ|名刺 |¥800|2500  | と、こんな感じにしたいんですが うまく説明できず申し訳ありませんが、どうぞよろしくお願い致します。

  • 再投稿:フィールドの値をテーブル名&フィールド名にして参照したい

    すみません。若干記入ミスだったので再投稿します。 こちらにご解答お願いします。 TABLE_a ・Ta_id ・key_table ・key_field ・key_no TABLE_b ・Tb_id ・Tb_name TABLE_c ・Tc_id ・Tc_name と3つのテーブルがあり、 key_tableに「TABLE_b」、key_fieldに「Tb_id」が入ってて、 TABLE_aとTABLE_bを select の left join して抽出したい場合、 どういうSQL文になるのでしょうか。 select * from TABLE_a left join case key_table when 'TABLE_b' then 'TABLE_b' when 'TABLE_c' then 'TABLE_c' end on 'TABLE_a.key_field'.key_no = case key_table when 'TABLE_b' then ''TABLE_a.key_table'.Tb_id' when 'TABLE_c' then ''TABLE_a.key_table'.Tc_id' end ; とやってみたのですが、うまくできませんでした。 ご教示お願いします。

  • C++Builder5でのデータベース(多対多Link)

    二つのテーブルA,Bについて、それぞれを結びつける情報を持ったテーブルCがあります。 テーブルAには、IDと文字列のフィールド、 テーブルBにも、IDと文字列のフィールド、 テーブルCには、双方のIDの値を取る、二つの整数フィールド、 があります。 このとき、Aのレコードを決めたときに、対応する(テーブルCのレコードによって決まる)Bのレコードを取得したいのですが、フォームにQueryを3つ置くと、妙なエラーが出たりして、悩んでいます。 この場合にウマくやるやり方をご教授ください。 あるいは、参考になるようなページはありませんでしょうか?

  • Accessで2つのテーブルのデータの整合性を確認したい

    Accessで2つのテーブルのデータの整合性を確認したいのですが、よい方法を教えていただけませんか? 状況は以下のとおりです。 Aテーブル    a   b    c   d   e       1  111  222  333  444  555 2  666   777 888 999 100 3   110 112 113 114 115 Bテーブル    a   b    c   d   e       1  111 222 333 444 555 2  666 777 000 999 100 3   110 112 300 400 500 ・AテーブルとBテーブルがあり、それぞれのテーブルのa、b、dフィールドのみを対象に、その値がAテーブルとBテーブルとで等しいかどうか調べたい。 (c、eフィールドの値が異なっていても、a、b、dフィールドの値が同じであればそのレコードはOKとし、a、b、dフィールドで1つでも異なる値があればNGとし、抽出したい。 例えば、Bテーブルの1、2レコードはOKだが、3レコードはNG) ・それぞれのテーブルのaフィールドが主キーになっている。 うまく説明できず、わかりにくいかもしれませんが、よろしくお願いします。

  • INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい

    挿入するフィールドの内1つだけを他のテーブルから取ってきた値を使いたいのですが、 insert into table1 (field1, field2, field3) values('a', (select field2 from table2 where field4='xxx'), 'b'); Oracleだと↑の書き方でいけるのですが、PostgreSQL(6.5.3)だとエラーになってしまいます。 2回もDBにアクセスしにいくのはいやなので、1文で書きたいです。上記以外で他の書き方をご存知でしたら教えてください。よろしくお願いします。