Está en la página 1de 4

TRIGGERS crear tabla con nuestro usuario create table employees_tato as select * from employees agregar 4 campos a la tabla

alter table employees_tato add (user_ing varchar2(30), fec_ing date, user_act varchar2(30), fec_act date); creacion del triggers CREATE OR REPLACE TRIGGER TRG_EMP_001 BEFORE INSERT OR UPDATE ON employees_tato referencing new as new old as old for each row begin if inserting then :new.user_ing:=user; :new.fec_ing:=sysdate; elsif updating then :new.user_ing:=user; :new.fec_ing:=sysdate; end if; end; actualizando tabla update employees_tato set salary=200000 where employee_id=201;

Tarea de Base de Datos: Pasos a. Cambiese a su esquema. (usuario/clave necesarios). b. Cree una tabla employees propia en el esquema en el que esta actualmente trabajando, use la siguiente sentencia: create table employees## as select * from hr.employees; c. Esta tabla debe guardar automticamente cualquier modificacion que se haga sobre los datos en la columna SALARY o tambien si toda la fila es borrada, los datos los guardara en la tabla Employees_audit (siguiendo un esquema de auditoria de cambios sobre la tabla). Si el dato del salary se cambia, la tabla debe guardar los siguientes valores en una nueva tabla: employee_id y salary (con el valor que tenan antes de que alguien le hiciera el cambio), user_id (usuario que hizo el cambio), fecha_cambio (con la fecha del cambio) y tipo_cambio. ASI: Nombre Tabla: Employees_audit

Columnas: Employee_id Salary User_id Fecha_cambio Tipo_cambio Si la fila es borrada, debe guardar los datos que tenia la fila entes de ser borrada. d. Los valores de la columna tipo_cambio dependeran de si el campo fue actualizado o borrado. Si el campo se actualizo el valor de tipo_cambio sera Modificado, Si el campo se borro, el valor de tipo_cambio sera Borrado. 1. Implemente la solucion al problema anterior por medio de un trigger de base de datos asociado a la tabla employees##, Nombre del trigger: TRG_CMB_EMP_SAL para cualquier cambio que se haga sobre la columna SALARY o cualquier fila que se borre. 2. Compruebe el funcionamiento del trigger actualizando la columna salary con otros valores y/o borrando algunas filas de la tabla employees. Debera comprobar el funcionamiento de manera presencial. 3. Consulte la tabla EMPLOYEES_AUDIT para verificar que se han adicionado automaticamente los datos que esperaba. 4. Escriba la sentencia SQL de creacin del rol de PLANILLA y asignacin del mismo al usuario juanita empleado de Recursos Humanos para las tablas: employees## y Employees_audit con todos los privilegios DML.
+++++++++Triggers+++++++++++++ Primera tabla creada create table employees_fa as select * from hr.employees; Segunda tabla creada create table employees_audit(Employee_id number(4), Salary number(10),User_id varchar2(30),Fecha_cambio date, Tipo_cambio varchar2(20)); CREATE OR REPLACE TRIGGER TRG_CMB_EMP_SAL BEFORE DELETE OR UPDATE ON employees_fa referencing new as new old as old for each row begin if updating then insert into employees_audit values (:old.employee_id,:old.salary,user,sysdate,'Modificado'); elsif deleting then (:old.employee_id,:old.salary,user,sysdate,'Borrado'); end if;

end; ++++++++++Triggers bueno++++++++++ create table empleados as select * from employees; create table emp_audit (Employee_id number(10), Salary number(10), User_id varchar2(30), Fecha_cambio date, Tipo_cambio varchar2(10)) create or replace trigger TRG_CMB_EMP_SAL2 before update or delete of salary on empleados referencing new as new old as old for each row begin if deleting then insert into emp_audit (Employee_id,Salary,User_id,Fecha_cambio,Tipo_cambio) values( :old.Employee_id,:old.Salary,user,sysdate,'Delete'); elsif updating then insert into emp_audit (Employee_id,Salary,User_id,Fecha_cambio,Tipo_cambio) values( :new.Employee_id,:new.Salary,user,sysdate, 'Update'); end if; end; update empleados set salary=19000 where employee_id=199; delete empleados where employee_id=199; Ejercicio 24-07-12 create view VISTA_EMP as select first_name,last_name,department_id from employees_fa; Para comprobar la vista select * from VISTA_EMP grant select on VISTA_EMP to hortiz;(para darle privilegios a otro usuario) Crear el Role create role manager30; Darle privilegios al Role grant select,insert,update,delete

on employees_fa to manager30; Para darle privilegios de poder modificar a otro usuario grant manager30 to ecerrato; para quitarle privilegios a otro usuario revoke manager30 from ecerrato;

También podría gustarte