两张表相关联创建一个视图
当向视图中插入记录时,键值保存表(两张表相关联成一张表,这张表中主键所在的原表就是键值保存表)中的字段能插入记录 非键值保存表不能插入记录
例如:
emp和dept表相关联
关联查询语句:select empno,ename,job,sal,dname,loc,e.deptno from emp e join dept d on e.deptno=d.deptno;
这两张表创建视图:
create or replace view v_emp_dept as(select empno,ename,job,sal,dname,loc,e.deptno from emp e join dept d on e.deptno=d.deptno);
当向视图中插入数据只能把数据插入到键值保存表中字段所对应的数据:
如果想向视图中插入数据并且能把数据插入到两张表中
只能创建触发器(并且是替代触发器)
CREATE OR REPLACE TRIGGER trg_emp_dept
INSTEAD OF INSERT ON v_emp_dept
FOR EACH ROW
BEGIN
INSERT INTO dept (deptno,dname,loc) values(:new.deptno,:new.dname,:new.loc);
INSERT INTO emp (empno,ename,job,sal,deptno) values(:new.empno,:new.ename,:new.job,:new.sal,:new.deptno);
END;
向视图v_emp_dept中插入数据
INSERT INTO v_emp_dept(empno,ename,job,sal,deptno,dname,loc)values(3022,'LK','DS',6000,13,'RESEARCH','BJ');