Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INSERTAR 3
CREATE TABLE producto 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_for_row
AFTER INSERT
ON temporal
FOR EACH ROW
BEGIN
dbms_output.put_line('mensaje repetido');
END;
Ejercicio 2
⚫ Crear un trigger que se dispare sólo una
vez luego de la inserción.
CREATE OR REPLACE TRIGGER t_una_vez
AFTER INSERT
ON temporal
BEGIN
dbms_output.put_line(‘una sola vez');
END;
Ejercicio 2
⚫ Probar ambos triggers al insertar más de
un registro a la vez en la tabla temporal.
SELECT *
FROM product_audit;
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 4
⚫ Crear una tabla historial para almacenar
las modificaciones a la tabla product.
CREATE TABLE historial
( prodid number(6),
descrip char(30),
fecha date );
Ejercicio 4
⚫ Crear un trigger que almacene el historial
de modificaciones de nombres de
productos.
CREATE OR REPLACE TRIGGER t_product
AFTER UPDATE
ON product
FOR EACH ROW
BEGIN
INSERT INTO historial VALUES
(:old.prodid, :old.descrip, sysdate);
END;
Ejercicio 4
⚫ Actualizar una descripción de la tabla
product.
UPDATE product
SET descrip = ‘NUEVA DESCRIPCIÓN’
WHERE prodid = 5 ;
Ejercicio 4
⚫ Comprobar que haya insertado en la tabla
historial.
SELECT *
FROM historial ;
Cláusula WHEN
⚫ Válida sólo cuando se usa FOR EACH
ROW.
⚫ Se disparará sólo cuando cumpla la
condición.
⚫ Se puede usar las variables old y new
dentro de la condición, pero no se usan
los dos puntos (:)
Ejercicio 5
⚫ 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,DELETE, UPDATE
ON emp
FOR EACH ROW WHEN (new.sal>1000)
BEGIN
dbms_output.put_line(‘Salario superior’);
END;
Ejercicio 5
⚫ 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?
introducción
PARTES BÁSICAS