重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

OracleのViewについてですが。。
‘あ行’という名前のテーブルと‘か行’という名前のテーブルがあるとします。
‘あ行’テーブルには‘あ’,‘い’,‘う’という列名があり、
‘か行’には‘か’,‘き’,‘く’,‘あ’,‘い’という列名があるとします。
以上の2つのテーブルから‘ひらがな’というViewを作りたいとします。
このViewの条件としては‘あ行’から‘あ’,‘い’をselectし、‘か行’からは‘あ行’と‘か行’のそれぞれの‘あ’列の項目が同じであるレコードから‘か’と‘あ’と‘い’をselectしてきます。この時‘あ’という列の項目内容は分かっていて、その項目が記載してあるレコードに‘い’の項目内容をupdateしたいとするとどのようにViewを書けばよいのでしょうか?あくまでもそれぞれのテーブルに直接‘い’項目を書くのではなくてViewにおいてUpdateで書きたいのですが。

A 回答 (1件)

条件がもうひとつはっきりしないので、よく分かりませんが、取りあえず、亜行テーブルからは、全行を、か行テーブルからは、条件に合うもののみを持ってくるViewのSelect文は以下のようになると思います。


select か行.か,あ行.あ,あ行.い from あ行,か行 where あ行.あ=か行.あ(+)

「い」をUpdateしたい、ということですが、それはあ行テーブルの「い」でしょうか?それともか行テーブル?、両方?そのあたりがはっきりしないと分かりませんが、2つ以上のテーブルを結合させたViewに対し、Updateをかけるのは難しいと基本的に思っていただいたほうが良いかと思います。

どうしても、Updateをかけたいという場合の方法として、ひとつの案ですが、テンポラリテーブルを作ります。(「か」、「あ」、「い」列のあるもの)これに対し、あ行テーブルの変更などに対してのトリガー、か行テーブルに対しての変更に対するトリガー、テンポラリテーブルに対する変更を元テーブルに書き戻すためのトリガーを作成するれば、テンポラリテーブルをViewのように使うことができると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す