Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Triggers(Disparadores)
INSERTAR 3
CREATE TABLE producto_sec_gru REGISTROS
( prodid number(6),
descrip char(30));
Ejercicio 1
Crear un trigger que se dispare una vez
por cada fila insertada.
CREATE OR REPLACE TRIGGER t_sec_gru
AFTER INSERT
ON temporal_sec_gru
FOR EACH ROW
BEGIN
dbms_output.put_line('mensaje repetido');
END;
Ejercicio 2
Crear un trigger que se dispare slo una
vez luego de la insercin.
CREATE OR REPLACE TRIGGER t_una_vez_sec_gru
AFTER INSERT
ON temporal_sec_gru
BEGIN
dbms_output.put_line(una sola vez');
END;
Ejercicio 2
Probar ambos triggers al insertar ms de
un registro a la vez en la tabla temporal.
SELECT *
FROM product_auditcib;
Eliminar o Deshabilitar
Eliminar un trigger
DROP TRIGGER nombre;
Deshabilitar un trigger
ALTER TRIGGER nombre DISABLE;
Habilitar un trigger
ALTER TRIGGER nombre ENABLE;
RESUMEN
Ejercicio 3
Crear una tabla historial para almacenar
las modificaciones a la tabla product.
CREATE TABLE historial_cib
( prodid number(6),
descrip char(30),
fecha date );
Ejercicio 3
Crear un trigger que almacene el historial
de modificaciones de nombres de
productos.
CREATE OR REPLACE TRIGGER t_product
AFTER UPDATE
ON productcib
FOR EACH ROW
BEGIN
INSERT INTO historial_cib VALUES
(:old.prodid, :old.descrip, sysdate);
END;
Ejercicio 3
Actualizar una descripcin de la tabla
product.
UPDATE productcib
SET descrip = 'NUEVA DESCRIPCIN'
WHERE prodid = 5 ;
Ejercicio 3
Comprobar que haya insertado en la tabla
historial.
SELECT *
FROM historial_cib ;
Clusula WHEN
Vlida slo cuando se usa FOR EACH
ROW.
Se disparar slo cuando cumpla la
condicin.
Se puede usar las variables old y new
dentro de la condicin, pero no se usan
los dos puntos (:)
Ejercicio 4
Crear un trigger que muestre un mensaje
cuando se inserta un empleado con
salario mayor a 1000.
CREATE OR REPLACE TRIGGER t_emp
AFTER INSERT
ON emp
FOR EACH ROW WHEN (new.sal>1000)
BEGIN
dbms_output.put_line('Salario superior');
END;
Creamos la tabla Empleado
Ejercicio 4
Insertar un empleado con salario mayor a
1000.
INSERT INTO emp (empno, sal)
VALUES (9876, 1001);
PREDICADO COMPORTAMIENTO
INSERTING TRUE si fue un INSERT.
FALSE caso contrario.
UPDATING TRUE si fue un UPDATE.
FALSE caso contrario.
DELETING TRUE si fue un DELETE.
FALSE caso contrario.
Ejercicio 5
Modificar la tabla historial para aumentar
un campo ORDEN.
En este campo se almacenar el tipo de
orden DML que genera el registro.
MUCHAS GRACIAS
,ALGUNA PREGUNTA?
introduccin
PARTES BSICAS