Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Triggers en PostgreSQL: Validación y Reglas de Negocio, Guías, Proyectos, Investigaciones de Derecho Penal

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

2020/2021

Subido el 24/10/2021

juan-rodriguez-dhz
juan-rodriguez-dhz 🇻🇪

5 documentos

1 / 40

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28

Vista previa parcial del texto

¡Descarga Triggers en PostgreSQL: Validación y Reglas de Negocio y más Guías, Proyectos, Investigaciones en PDF de Derecho Penal solo en Docsity!

PostgreSQL : Triggers

[email protected]

Triggers 1

● Asocian un evento con una acción

● Son útiles porque nos evitan tener que implementar las

mismas validaciones en diferentes aplicativos.

● Algunos Usos:

○ Validaciones básicas

○ Auditoría de datos online

○ Reglas del Negocio

○ Redundancia de datos controlada

Triggers 2

POSIBLES EVENTOS

● INSERT

● UPDATE

● DELETE

● TRUNCATE

Pregunta: Dado que un Insert/Update/Delete puede afectar muchos
registros ,cuantas veces deberá realizarse la acción del trigger?

Pregunta: Dado que un Insert/Update/Delete puede afectar muchos registros ,cuántas veces deberá realizarse la acción del trigger?

Funciones tipo triggers 1

● En PostgreSQL, la acción siempre es la ejecución de una función.
● La Función debe ser tipo Trigger
● La acción concreta del trigger está dada por:
○ Los cambios en otras tablas que haga la función trigger
■ Inserts - Updates - Deletes (a otras tablas diferentes a la del evento)
○ El valor que retorne el trigger

Triggers - Ejemplo 1

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

Triggers - Ejemplo 1

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

Triggers - Ejemplo 1

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

Triggers - Ejemplo 1 - Implementación

CREATE TRIGGER pedir_a_fabrica AFTER INSERT ON pedidos_clientes FOR EACH ROW EXECUTE PROCEDURE ver_stock_y_pedir_a_fabrica();

EVENTO
ACCION

Triggers - Ejemplo 1 - Implementación

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?

Triggers 4

DIFERENCIA ENTRE AFTER Y BEFORE TRIGGERS

● Si el trigger es invocado de forma “BEFORE EVENT”,

entonces el trigger puede dejar sin efecto la modificación o el

evento.

● Si el trigger es invocado de forma “AFTER EVENT”, entonces

todos los cambios están disponibles para el trigger.

● En un trigger “AFTER EVENT” no se puede alterar la

modificación

Funciones tipo Triggers 2

PUNTOS A CONSIDERAR EN LAS FUNCIONES

● La función tipo trigger debe crearse antes que el trigger.

● La función no puede tener argumentos y tiene que devolver

el tipo "trigger“

● Los registros NEW y OLD actúan como parámetros de la

función. Es posible consumirlos en la función.

● Una misma función puede utilizarse en múltiples triggers en

diferentes tablas.

Triggers - Ejemplo 2

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.

  1. cliente debe existir en tabla clientes

Triggers - Ejemplo 2

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;