Que es un trigger, para que sirve, donde se aplica.
En SQL, un trigger (disparador) es un objeto de base de datos que se utiliza para
ejecutar una acción o un conjunto de acciones automáticamente en respuesta a ciertos
eventos o cambios en una tabla de base de datos.
Un trigger se define en una tabla y se asocia a uno o más eventos específicos, como la
inserción, actualización o eliminación de filas en la tabla. Cuando ocurre un evento
específico, el trigger se activa automáticamente y ejecuta un conjunto de instrucciones
SQL definidas por el programador.
Crea un trigger para evento insert en la tabla considerada la principal
de tu base de datos
CREATE TRIGGER trigger_insert_facturas
ON Factura
AFTER INSERT
AS
BEGIN
-- aquí es donde colocarías las instrucciones SQL que deseas ejecutar en respuesta
al evento INSERT
UPDATE Factura SET fecha = GETDATE() WHERE id_factura = (SELECT id_factura
FROM inserted);
END;
Crea un trigger para evento delete en la tabla Hotel de animales.
CREATE TRIGGER trigger_delete_animales
ON Animales
AFTER DELETE
AS
BEGIN
-- aquí es donde colocarías las instrucciones SQL que deseas ejecutar en respuesta
al evento DELETE
INSERT INTO Animales(Animal_id, Raza, Especie)
SELECT deleted.Animal_id, GETDATE(), 'Eliminado' FROM deleted;
END;
Crea un trigger para 3 eventos: insert, update y delete para una tabla
diferente a las usadas anteriormente,
CREATE TRIGGER trigger_empleados
ON Empleados
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
-- aquí es donde colocarías las instrucciones SQL que deseas ejecutar en respuesta
a los eventos INSERT, UPDATE y DELETE
IF EXISTS (SELECT * FROM inserted)
BEGIN
INSERT INTO Empleados(ID_Empleados, Nombre, Salario)
SELECT ID_Empleados, GETDATE(), 'Insertado' FROM inserted;
END
IF EXISTS (SELECT * FROM deleted)
BEGIN
INSERT INTO Empleados(ID_Empleados, Nombre, Salario)
SELECT ID_Empleados, GETDATE(), 'Eliminado' FROM deleted;
END
IF EXISTS (SELECT * FROM inserted i INNER JOIN deleted d ON i.ID_Empleados =
d.ID_Empleados)
BEGIN
INSERT INTO Empleados(ID_Empleados, Nombre, Salario)
SELECT i.ID_Empleados, GETDATE(), 'Actualizado' FROM inserted i INNER JOIN
deleted d ON i.ID_Empleados = d.ID_Empleados;
END
END;
Explique en que consisten los 3 disparadores creados, (amplio en
su explicación)
Se crearon tres triggers en esta tarea, uno para el evento "INSERT" en la tabla
"Facturas", otro para los eventos "INSERT", "UPDATE" y "DELETE" en la tabla
"Empleados", y uno más para el evento "DELETE" en la tabla "Zoológico-Animales". A
continuación, se explica en qué consisten cada uno de ellos:
1. Trigger para el evento "INSERT" en la tabla "Facturas": Este trigger se activa
después de que se inserta un nuevo registro en la tabla "Facturas". En este
caso, el trigger inserta un nuevo registro en la tabla "Factura" con el mismo valor
del campo "id_factura" del registro insertado y la fecha actual. Este trigger puede
ser útil si se desea mantener un registro de las facturas emitidas, junto con su
fecha de emisión.
2. Trigger para los eventos "INSERT", "UPDATE" y "DELETE" en la tabla
"Empleados": Este trigger se activa después de que se inserta, actualiza o
elimina un registro en la tabla "Empleados". En el caso de una inserción, el
trigger inserta un nuevo registro en la tabla "Empleados" con el mismo valor del
campo "ID_Empleados" y la fecha actual en el campo "Nombre". En el caso de
una actualización, el trigger actualiza el campo "Nombre" del registro modificado
con la fecha actual. Y en el caso de una eliminación, el trigger inserta un nuevo
registro en la tabla "EmpleadosEliminados" con los mismos valores que el
registro eliminado. Este trigger puede ser útil si se desea mantener un registro
de las acciones realizadas sobre la tabla "Empleados".
3. Trigger para el evento "DELETE" en la tabla "Zoológico-Animales": Este trigger
se activa después de que se elimina un registro en la tabla "Zoológico-
Animales". En este caso, el trigger inserta un nuevo registro en la tabla
"AnimalesEliminados" con los mismos valores que el registro eliminado. Este
trigger puede ser útil si se desea mantener un registro de los animales que se
han eliminado de la base de datos.
En resumen, los tres triggers creados son herramientas que permiten automatizar
acciones en la base de datos en respuesta a ciertos eventos. Cada trigger se activa en
respuesta a un evento específico y ejecuta una o varias instrucciones SQL en
respuesta a ese evento. Los triggers pueden ser útiles para mantener registros, realizar
auditorías, aplicar reglas de negocio, entre otros usos. Es importante tener cuidado al
crear triggers para asegurarse de que no afecten negativamente el rendimiento o la
integridad de la base de datos.
Inhabilite los 2 primeros triggers.
DISABLE TRIGGER trigger_insert_facturas ON Factura;
DISABLE TRIGGER trigger_delete_animales ON Animales;