假设在EMPLOYEES表上建立了一个视图ABC。
如果我在视图ABC中插入一条新的员工记录,那么在ABC的基表EMPLOYEES是否会实际上也相应地增加一条新的员工记录呢??

解决方案 »

  1.   

    会的,尤其是INSERT时.当然前提条件是你这个视图是个简单视图,比如无关联,无汇总,允许带过滤条件,EMPLOYEES所有非空字段都在ABC中包含,且在INSERT时赋值.
      

  2.   

    不要企图在视图中做insert, update动作.
      

  3.   

    在ABC的基表EMPLOYEES是否会实际上也相应地增加一条新的员工记录呢??
    =============================================================
    只在基表EMPLOYEES上增加一条新的员工记录,视图不保存数据。
      

  4.   

    那到底能不能在视图中执行DML语言啊?比如INSERT INTO ABC(“……”)有效吗?或者其他DML语句有效吗?
      

  5.   

    TX们,为什么这么简单的问题为什么不自己做个测试来回答呢? create table employees(empno number primary key, ename varchar2(20), deptno number not null);create view abc as select * from employees;insert into abc values(1,'abc',10);commit;select * from abc;select * from employees;执行以上代码, 看看ABC和EMPLOYEES的内容是否一致?但如果你的ABC定义如下:create or replace view abc as select empno, ename from employees;or create or replace view abc1 as select deptno,count(empno) num_emp from employees group by deptno;然后再执行insert into abc values(2,'def');insert into abc1 values(20,10);看看结果如何?结论应该是对视图是可以DML的,不过根据视图定义不同, DML可能会失败,也可能会成功. 基本条件是,视图为简单视图(无关联和汇总), 其次, DML不受基表约束限制,如NOT NULL, PK等等.