在oracle中更新视图

戈尔卡·西勒罗(Gorka Sillero)

下面,我定义了一些表,用于在定义中键入的相关表。很简单,尽管现在我正试图提高视图中这两名员工的薪水,并且我无法完成更新并收到您将在下面看到的错误消息。任何人都可以指导我一点吗?表employee,project和employees_projects的定义:创建表employee(ID号,名称varchar2(20),移动varchar2(10),地址varchar2(30),薪水编号(6,2),hire_date日期,department_id号);

创建表项目(ID号,名称varchar2(20),预算号(10,2),开始日期,结束日期);创建表employee_projects(id号,employee_id号,project_id号);

视图定义是:

create view lucky_employees as 
select e.name,e.salary from employees e, project p, employee_projects ep 
where e.project_id=p.id and e.id=ep.employee_id and p.budget > 1000000.00 ;

SQL>选择* from lucky_employees;

    ID NAME                     SALARY

     1 Maria                   1365.28
     2 Sonja                   1365.28

然后,我尝试将视图更新10%,这是我知道可以在某些条件下执行的操作:SQL>

update lucky_employees set salary = salary * 1.1;
update lucky_employees set salary = salary * 1.1
                       *

第1行发生错误:

ORA-01779: cannot modify a column which maps to a non key-preserved table

成功更新它会怎样?

非常感谢,给您带来的不便,敬请谅解!!

好人
create view lucky_employees as 
select e.name from employees e, project p, employee_projects ep 
where e.project_id=p.id and e.id=ep.employee_id and p.budget > 1000000.00 ;

发生此错误的原因是,视图的每个薪水都不会唯一地映射到employee表的薪水。

来自oracle docs的更多信息在这里在此处从Burleson进行解释

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章