我正在尝试自学 SQL 并陷入困境。
我正在使用 Oracle 提供的标准演示表(参见此处)。
假设我创建了两个相同的视图:
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';
现在两个视图都没有返回任何行,并且基础基表已被修改(所有“文员”现在都是“助理”)。
很明显,我误解了视图的工作原理,但我认为视图的想法是提供一个虚拟表。
谁能解释为什么在一个视图上更新和设置属性会改变基础表?