
































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
En este documento se presenta una introducción a los triggers en PostgreSQL, su funcionamiento y cómo se utilizan para aplicar validaciones básicas, auditoría de datos en línea, reglas de negocio y redundancia de datos controlada. Se incluyen ejemplos prácticos y cómo crear una función tipo trigger.
Tipo: Guías, Proyectos, Investigaciones
1 / 40
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!

































POSIBLES EVENTOS
● INSERT
● UPDATE
● DELETE
● TRUNCATE
Pregunta: Dado que un Insert/Update/Delete puede afectar muchos registros ,cuántas veces deberá realizarse la acción del trigger?
Tabla Pedidos (codigo_articulo, cantidad, cliente) Tabla Stock (codigo_articulo, existencia) Tabla Pedido_a_fabrica(codigo_articulo, cantidad)
EJEMPLO DE REGLAS DEL NEGOCIO ES UN EJEMPLO SIMPLIFICADO. LA IDEA ES: SI UN CLIENTE HACE UN PEDIDO DE UN ARTICULO DEL QUE NO TENEMOS SUFICIENTE STOCK, DEBEMOS AUTOMATICAMENTE HACER UN PEDIDO DE FABRICACION DE ESE ARTICULO
Tabla Pedidos (codigo_articulo, cantidad, cliente) Tabla Stock (codigo_articulo, existencia) Tabla Pedido_a_fabrica(codigo_articulo, cantidad)
PEDIDOS_CLIENTES PEDIDOS_A_FABRICA Codigo_articulo Cantidad Cliente Codigo_articulo Cantidad 102 50 10
STOCK Codigo_articulo Existencia 100 10 101 2 102 300
Tabla Pedidos (codigo_articulo, cantidad, cliente) Tabla Stock (codigo_articulo, existencia) Tabla Pedido_a_fabrica(codigo_articulo, cantidad)
PEDIDOS_CLIENTES PEDIDOS_A_FABRICA Codigo_articulo Cantidad Cliente Codigo_articulo Cantidad 102 50 10 101 40 101 40 20 trigger
STOCK Codigo_articulo Existencia 100 10 101 2 102 300
CREATE TRIGGER pedir_a_fabrica AFTER INSERT ON pedidos_clientes FOR EACH ROW EXECUTE PROCEDURE ver_stock_y_pedir_a_fabrica();
CREATE OR REPLACE FUNCTION ver_stock_y_pedir_a_fabrica() RETURNS trigger AS $BODY$ DECLARE v_existencia INTEGER; BEGIN -- Obtenemos las cantidad de existencia del articulo SELECT existencia INTO v_existencia FROM stock WHERE codigo_articulo = NEW.codigo_articulo;
IF NEW.cantidad > v_existencia THEN INSERT INTO pedidos_a_fabrica VALUES (NEW.codigo_articulo,NEW.cantidad) ; END IF; RETURN NEW; END; $BODY$ LANGUAGE plpgsql;
Qué es el NEW?
DIFERENCIA ENTRE AFTER Y BEFORE TRIGGERS
Tabla Pedidos (codigo_articulo, cantidad, cliente) Tabla Clientes (cliente_id, nombre)
EJEMPLO DE VALIDACION ES UN EJEMPLO SIMPLIFICADO. LA IDEA ES: SI AL CREAR UN PEDIDO, ESTE NO CUMPLE CIERTAS VALIDACIONES, ENTONCES SE RECHAZA LA CREACION DEL PEDIDO VALIDACIONES: 1) cantidad debe ser mayor que cero.
Tabla Pedidos (codigo_articulo, cantidad, cliente) Tabla Clientes (cliente_id, nombre)
CONSIDERACIONES: ● Como queremos rechazar la inserción, debemos usar un trigger BEFORE ● En caso que corresponda rechazar la inserción debemos hacer un: RETURN NULL;