Categoria: Programacion Tema: Base de datos Titulo: Triggers sobre vistas en PL SQL
Fecha del Tema: 2013-04-29 18:52:42INSTEAD OF: el código del cuerpo del trigger se ejecutará en vez de la sentencia. Se utiliza para poder modificar vistas que no son modificables de forma inherente. Vista: CREATE OR REPLACE VIEW accounting AS SELECT empno, ename, job, megr, sal FROM emp WHERE deptno=10; Sobre la vista Accounting no podemos insertar un registro, ya que no estan todas las columnas obligatorias de EMP Solución -> Hacer un trigger INSTEAD OF CREATE OR REPLACE TRIGGER accounting_trig INSTEAD OF INSERT ON accounting FOR EACH ROW BEGIN INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (:new.empno, :new.ename, :new.job, :new.mgr, sysdate. :new.sal, null, 10); Disparo: Insert into accounting (empno, ename, job, mgr, sal) VALUES (7000,â??lewisâ??, â??clerckâ??, 7782,1300);
INSTEAD OF: el código del cuerpo del trigger se ejecutará en vez de la sentencia. Se utiliza para poder modificar vistas que no son modificables de forma inherente. Vista: CREATE OR REPLACE VIEW accounting AS SELECT empno, ename, job, megr, sal FROM emp WHERE deptno=10; Sobre la vista Accounting no podemos insertar un registro, ya que no estan todas las columnas obligatorias de EMP Solución -> Hacer un trigger INSTEAD OF CREATE OR REPLACE TRIGGER accounting_trig INSTEAD OF INSERT ON accounting FOR EACH ROW BEGIN INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) VALUES (:new.empno, :new.ename, :new.job, :new.mgr, sysdate. :new.sal, null, 10); Disparo: Insert into accounting (empno, ename, job, mgr, sal) VALUES (7000,â??lewisâ??, â??clerckâ??, 7782,1300);