Está en la página 1de 14

UNIVERSIDAD POLITÉCNICA DE TULANCINGO.

Parcial 2
Actividad 4 “Indagación de Disparadores SQL”.
Por
Nombre del alumno(a)

Ariadna Aguilar Tello.

Carrera:

U
Ingeniería en Sistemas Computacionales.

Asignatura:

Administración de Bases de Datos.

P Nombre del Catedrático:

Mtro. Juan Martin Hernández Ramírez

T ISC 62
Sexto Cuatrimestre
Tulancingo de Bravo, Hidalgo
Mayo – Agosto 2022.

pág. 1
Tabla de Contenidos
¿Qué es un disparador en SQL? ........................................................................................ 4

¿Cuál es la función de un disparador SQL? ..................................................................... 6

¿En qué momentos se ocupan los disparadores SQL? .................................................. 7

Sintaxis de un disparador SQL ........................................................................................... 8

Ejecución de disparador en SQL. ..................................................................................... 11

Ejemplos de un disparador en SQL ................................................................................. 13

Ejemplo de un TRIGGER ............................................................................................ 13


Ejemplo 2 de un TRIGGER ......................................................................................... 13
Bibliografía .......................................................................................................................... 14

pág. 2
Concepto Descripción

pág. 3
Un disparador o trigger es una funcionalidad que la base de datos ejecuta de forma automática
cuando se realiza una operación de tipo Insert, Update o Delete en una tabla o vista, o cuando se
ejecuta una consulta SQL sobre una tabla o vista.

Un disparador define una acción que la base de datos debe llevar a cabo cuando se produce algún
suceso relacionado con la misma. Los disparadores (triggers) pueden utilizarse para completar la
integridad referencial, también para imponer reglas de negocio complejas o para auditar cambios en
los datos. El código contenido en un disparador, denominado cuerpo del disparador, está formado
por bloques PL/SQL. La ejecución de disparadores es transparente al usuario.

Existen varios tipos de disparadores, dependiendo del tipo de transacción de disparo y el nivel en el
que se ejecuta el disparador (trigger):

1.- Disparadores de nivel de fila: se ejecutan una vez para cada fila afectada por una instrucción
¿Qué es un disparador DML. Los disparadores de nivel de fila se crean utilizando la cláusula for each row en el comando
create trigger.
en SQL?
2.- Disparadores de nivel de instrucción: se ejecutan una vez para cada instrucción DML. Por
ejemplo, si una única instrucción INSERT inserta 500 filas en una tabla un disparador de nivel de
instrucción para dicha tabla sólo se ejecutará una vez. Los disparadores de nivel de instrucción son
el tipo predeterminado que se crea con el comando create trigger.

3.- Disparadores Before y After: puesto que los disparadores son ejecutados por sucesos, puede
establecerse que se produzcan inmediatamente antes (before) o después (after) de dichos sucesos.

4.- Disparadores Instead Of: puede utilizar INSTEAD OF para indicar a Oracle lo que tiene que
hacer en lugar de realizar las acciones que invoca el disparador. Por ejemplo, podría usar un
disparador INSTEAD OF en una vista para gestionar las inserciones en una tabla o para actualizar
múltiples tablas que son parte de una vista.

5.- Disparadores de esquema: puede crear disparadores sobre operaciones en el nivel de


esquema tales como create table, alter table, drop table, audit, rename, truncate y revoke. Puede
incluso crear disparadores para impedir que los usuarios eliminen sus propias tablas. En su mayor
parte, los disparadores de nivel de esquema proporcionan dos capacidades: impedir operaciones

pág. 4
DDL y proporcionar una seguridad adicional que controle las operaciones DDL cuando estas se
producen.
6.- Disparadores en nivel de base de datos: puede crear disparadores que se activen al
producirse sucesos de la base de datos, incluyendo errores, inicios de sesión, conexiones y
desconexiones. Puede utilizar este tipo de disparador para automatizar el mantenimiento de la base
de datos o las acciones de auditoría.

Un disparador es un tipo especial de procedimiento almacenado que se ejecuta automáticamente


cuando ocurre un evento en el servidor de la base de datos. Los disparadores DML se ejecutan
cuando un usuario intenta modificar datos a través de un evento de lenguaje de manipulación de
datos (DML). Los eventos DML son declaraciones INSERT, UPDATE o DELETE en una tabla o
vista. Estos disparadores se disparan cuando se dispara cualquier evento válido, ya sea que las filas
de la tabla se vean afectadas o no. Para obtener más información, consulte Activadores DML .

pág. 5
Dicha funcionalidad se plasma mediante una función, la cual se llama función disparadora, que se
ejecuta cada vez que PostgreSQL actúa sobre una fila (disparador de fila o de tipo for each row) o
una única vez por sentencia SQL (disparador de secuencia o de tipo for each statement).

La creación de un disparador o trigger se realiza en dos pasos:


➢ En primer lugar, se crea la función disparadora.
➢ En segundo lugar, se crea el propio disparador SQL con el comando CREATE TRIGGER al
que introduciremos los parámetros para ejecutar la función disparadora creada en el paso
¿Cuál es la función de anterior.
un disparador SQL?
La principal función de los disparadores (trigger) es contribuir a mejorar la gestión de la base de
datos. Gracias a ellos muchas operaciones se pueden realizar de forma automática, sin necesidad
de intervención humana, lo que permite ahorrar mucho tiempo.

Otra de sus funciones es aumentar la seguridad e integridad de la información. Esto lo consiguen


gracias a la programación de restricciones o requerimientos de verificación que permiten minimizar
los errores y sincronizar la información.

Por otra parte, entre sus principales ventajas es que todas estas funciones se pueden realizar desde
la propia base de datos, es decir, no es necesario recurrir a lenguajes externos de programación.

pág. 6
Los trigger se puede ejecutar cuando el usuario realizar alguna acción relacionada con añadir,
actualizar o eliminar información de una tabla. Es decir, al usar los comandos INSERT, UPDATE o
DELETE.
Por tanto, para poder usar un trigger es necesario que el usuario posea permisos INSERT y
DELETE e dicha base de datos.
¿En qué momentos se
ocupan los disparadores Los triggers pueden ejecutar su acción en diferentes momentos.
SQL? ➢ Antes de ejecutar la sentencia (before statement)
➢ Después de ejecutar la sentencia y de comprobar las restricciones y condiciones aplicables
(after statement)
➢ Antes de modificar la fila de la tabla afectada por la sentencia del trigger, y de comprobar las
restricciones y condiciones de ejecución (before row)
➢ Después de modificar la fila de la tabla afectada por la sentencia del trigger, y de comprobar
las restricciones y condiciones de ejecución (after row)

pág. 7
CREATE TRIGGER nombre_disp evento_disp
ON nombre_tabla FOR EACH ROW sentencia_disp;

Ejemplo como tal:


CREATE TRIGGER area_perimetro_trigger
BEFORE INSERT OR UPDATE ON parcelas
FOR EACH ROW EXECUTE
PROCEDURE funcion_area_perimetro();

Sintaxis de un
disparador SQL

pág. 8
Si desplegamos la sección Triggers de la tabla parcelas, comprobamos que la
creación del trigger ha tenido éxito:

Por último, ya sólo nos quedaría introducir las geometrías de las parcelas
deseadas dentro de la tabla y, automáticamente, aparecerán calculados los
campos identificadores (gid) y area.

pág. 9
pág. 10
1. Crearé una tabla en la base de datos “Northwind” para poder realizar el
Ejecución de disparador ejemplo.
en SQL.

2. Crearé un trigger que guardará automáticamente un ‘log’ cuando se elimine un


dato en la tabla “Customers”.

3. Compruebo que la tabla ejemplo que creamos este vacía.

4. Eliminare un dato de la tabla “Customers”.

5. Revisaré que el trigger se haya ejecutado haciendo un SELECT de la tabla que


creamos.
pág. 11
Realizando el último paso podemos observar que el trigger ha funcionado, ha hecho
el INSERT en la tabla que creamos.

pág. 12
Ejemplos de un
disparador en SQL Ejemplo de un TRIGGER
Vamos a resolver un TRIGGER que nos permita mantener una copia de todos los clientes que
se inserten en una base de datos de una tienda online. Para esto tendremos dos tablas: cliente y
cliente_historico. Así, el siguiente TRIGGER insertará toda la información del cliente (nombre, dni,
direccion) más una columna extra: fecha_registro.

CREATE TRIGGER trigger_cliente_historico


AFTER INSERT ON cliente
FOR EACH ROW
BEGIN
INSERT INTO cliente_historico(nombre, dni, direccion)
VALUES (NEW.nombre, NEW.dni, NEW.direccion, CURDATE());
END;

Ejemplo 2 de un TRIGGER
El siguiente TRIGGER insertará un valor nuevo en un campo único identificador tras una
actualización de datos en la tabla usuario_web:

CREATE TRIGGER trigger_usuario_identificador


AFTER UPDATE ON usuario
FOR EACH ROW
BEGIN
UPDATE usuario SET identificador = CONCAT(NEW.id, '_', NEW.nombre, '_', NEW.dni)
WHERE id = OLD.id;
END;

pág. 13
Bibliografía
2022, M. (s.f.). Microsoft Build. Obtenido de https://docs.microsoft.com/es-
es/sql/sql-server/?view=sql-server-ver15
Blog. (s.f.). ayudaley. Obtenido de https://ayudaleyprotecciondatos.es/bases-de-
datos/trigger/
Cursos2022. (s.f.). MmappingGIS. Obtenido de
https://mappinggis.com/2016/06/crear-ejecutar-disparador-trigger-
postgis/#:~:text=Un%20disparador%20o%20trigger%20es,sobre%20una%2
0tabla%20o%20vista.
TutorialSQL. (s.f.). Obtenido de
https://www.tutorialesprogramacionya.com/sqlserverya/temarios/descripcion
.php?cod=111&punto=105&inicio=

pág. 14

También podría gustarte