0

私は自分自身にSQLを教えようとしていて、行き詰まっています。

Oracleが提供する標準のデモテーブルを使用しています(ここを参照)。

2つの同じビューを作成するとします。

create view view_a_emp as
select empno, ename, job
from emp
where job = 'CLERK';

create view view_b_emp as
select empno, ename, job
from emp
where job = 'CLERK';

それぞれについて4行が返されます。

view_b_empを更新すると、次のようになります。

update view_b_emp
set job = 'ASSISTANT';

これで、2つのビューのどちらも行を返さず、基になるベーステーブルが変更されました(すべての「クラーク」が「アシスタント」になりました)。

ビューがどのように機能するかを誤解していることは明らかですが、ビューのアイデアは仮想テーブルを提供することだと思いました。

1つのビューで属性を更新および設定すると、基になるテーブルが変更される理由について、誰かが光を当てることができますか?

4

2 に答える 2

1

これがその仕組みです!ビューは、保存されたクエリにすぎません。

ビューの更新がビューの定義と競合しないようにする場合は、ビューに追加できwith check optionます。

http://docs.oracle.com/cd/E11882_01/server.112/e26088/statements_8004.htm#SQLRF54792を参照してください

于 2013-03-27T13:37:29.990 に答える
0

基になるテーブルにリンクされているため、テーブルビューを変更すると、基になるテーブルが変更されます。 http://www.informit.com/articles/article.aspx?p=130855&seqNum=4

于 2013-03-27T13:37:45.763 に答える