Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Se guardar en la tabla AUDITAR_ALUMNOS que contar con los siguientes campos: DNI,
APENOM, USUARIO, FECHA, SENTENCIA.
(Determina el tipo de dato correcto para cada columna).
CREATE TABLE AUDITAR_ALUMNOS(
DNI
vARCHAR2(10),
APENOM VARCHAR2(30),
USUARIO VARCHAR(20),
FECHA DATE,
SENTENCIA VARCHAR(10)
);
CREATE OR REPLACE TRIGGER T8
BEFORE DELETE OR INSERT OR UPDATE ON ALUMNOS FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO AUDITAR_ALUMNOS VALUES(:NEW.DNI,
SYSDATE,'INSERT');
ELSIF DELETING THEN
INSERT INTO AUDITAR_ALUMNOS VALUES(:OLD.DNI,
SYSDATE,'DELETE');
ELSIF UPDATING THEN
INSERT INTO AUDITAR_ALUMNOS VALUES(:OLD.DNI,
SYSDATE,'UPDATE_OLD');
INSERT INTO AUDITAR_ALUMNOS VALUES(:NEW.DNI,
SYSDATE,'UPDATE_NEW');
END IF;
END;
/
:NEW.APENOM, USER,
:OLD.APENOM, USER,
:OLD.APENOM, USER,
:NEW.APENOM, USER,
order by dni
;
create or replace trigger t_20
instead of insert or delete or update on V_20
declare
v_cod asignaturas.cod%type;
begin
if inserting then
select cod into v_cod from asignaturas where nombre=:new.nombre;
insert into notas
values(:new.dni,v_cod, null);
elsif deleting then
select cod into v_cod from asignaturas where nombre=:old.nombre;
delete notas where dni=:old.dni and cod=v_cod;
elsif updating ('NOTA')then
update notas set nota=:new.nota
where dni=:old.dni and cod=v_cod;
end if;
end;
/
5. Modifica el trigger del ejercicio 2 de tal forma que si el departamento no e
xiste,
lo da de alta en la tabla DEPART asocindole como DEPT_NO la siguiente decena dis
ponible.
Posteriormente dar de alta al empleado en dicho departamento.
CREATE OR REPLACE VIEW EMP_DEP AS
SELECT EMP_NO, APELLIDO, SALARIO, OFICIO, DNOMBRE FROM EMPLE E, DEPART D
WHERE E.DEPT_NO=D.DEPT_NO;
CREATE OR REPLACE TRIGGER T_EMP_DEP
INSTEAD OF DELETE OR INSERT OR UPDATE
ON EMP_DEP
DECLARE
V_DEPT_NO DEPART.DEPT_NO%TYPE;
BEGIN
IF DELETING THEN
DELETE EMPLE WHERE EMP_NO=:OLD.EMP_NO;
ELSIF INSERTING THEN
----SELECT DEPT_NO INTO V_DEPT_NO FROM DEPART
WHERE DNOMBRE=:NEW.DNOMBRE;
----INSERT INTO EMPLE(EMP_NO, APELLIDO, SALARIO, OFICIO, DEPT_NO)
VALUES(:NEW.EMP_NO, :NEW.APELLIDO, :NEW.SALARIO, :NEW.OFICIO, V_
DEPT_NO);
ELSIF UPDATING THEN
---SELECT DEPT_NO INTO V_DEPT_NO FROM DEPART
WHERE DNOMBRE=:NEW.DNOMBRE;
----UPDATE EMPLE SET EMP_NO=:NEW.EMP_NO, APELLIDO=:NEW.APELLIDO, SAL
ARIO=:NEW.SALARIO, OFICIO=:NEW.OFICIO, dept_no=v_dept_no
WHERE EMP_NO=:OLD.EMP_NO;
END IF;
END;
/