You are on page 1of 9

Jeisson Duban Juanias Villarraga

ID: 351997
1. Crear un Trigger que borre en cascada sobre la tabla relacionada cuando borremos una
sala. Mostrar el registro borrado al ejecutar el Trigger.

Query:

-- =============================================
-- Author: Jeisson Juanias
-- Create date: 22-10-2020
-- =============================================
ALTER TRIGGER [dbo].[EliminarRegistroSala]
ON [dbo].[Sala]
AFTER DELETE
AS
BEGIN

SET NOCOUNT ON;

DECLARE @Hospital_Cod AS INT;


DECLARE @Sala_Cod AS INT;

SELECT @Hospital_Cod = Hospital_Cod, @Sala_Cod = Sala_Cod FROM deleted

SELECT 'Datos a Eliminar' as Mensaje

SELECT * FROM deleted

DELETE FROM Plantilla WHERE Hospital_Cod = @Hospital_Cod AND Sala_Cod = @Sala_Cod

END
Jeisson Duban Juanias Villarraga
ID: 351997

Resultado:
Jeisson Duban Juanias Villarraga
ID: 351997
2. Crear un Trigger que se active cuando Actualicemos alguna sala del hospital, modificando
sus tablas relacionadas. Mostrar el registro Actualizado.

-- =============================================
-- Author: Jeisson Juanias
-- Create date: 22-10-2020
-- =============================================
ALTER TRIGGER dbo.ActualizarSala
ON dbo.Sala
AFTER UPDATE
AS
BEGIN

SET NOCOUNT ON;

UPDATE t
SET t.Sala_Cod = i.Sala_Cod
FROM
inserted i
INNER JOIN deleted d ON i.Hospital_Cod = d.Hospital_Cod AND i.Sala_Cod <> d.Sala_Cod
INNER JOIN Plantilla t ON d.Hospital_Cod = t.Hospital_Cod AND d.Sala_Cod = t.Sala_Cod

SELECT 'Datos Actualizados' as Mensaje


SELECT * FROM inserted

END
Jeisson Duban Juanias Villarraga
ID: 351997
3. Crear un Trigger que se active al eliminar un registro en la tabla hospital y modifique las
tablas correspondientes.

Query:

-- =============================================
-- Author: Jeisson Juanias
-- Create date: 22-10-2020
-- =============================================
ALTER TRIGGER dbo.EliminarHospital
ON dbo.Hospital
AFTER DELETE
AS
BEGIN

SET NOCOUNT ON;

DECLARE @Cod_Hospital as int;

SELECT @Cod_Hospital = deleted.Hospital_Cod FROM deleted

DELETE Sala WHERE Hospital_Cod = @Cod_Hospital


DELETE Doctor WHERE Hospital_Cod = @Cod_Hospital
END
GO

 En esta parte se activa automáticamente el Trigger de Eliminacion de la tabla sala.


Jeisson Duban Juanias Villarraga
ID: 351997
4. Crear un Trigger para controlar la inserción de empleados, cuando insertemos un empleado
se copiaron datos sobre la inserción en una tabla llamada Control_BD. Los datos que se
copiaron son el Número de empleado, El usuario que está realizando la operación, la fecha
y el tipo de operación.

Query:

-- =============================================
-- Author: Jeisson Juanias
-- Create date: 22-10-2020
-- =============================================
ALTER TRIGGER [dbo].[ControlInsert]
ON [dbo].[Emp]
AFTER INSERT
AS
BEGIN

SET NOCOUNT ON;

INSERT INTO Control_BD


(No_Empleado, Usuario, FechaOperacion, TipoOperacion)
SELECT Emp_No, SYSTEM_USER, GETDATE(), 'iNSERCION' FROM inserted

END
Jeisson Duban Juanias Villarraga
ID: 351997
5. Crear un Trigger que actué cuando se modifique la tabla hospital y sobre todas las tablas
con las que está relacionadas.

Query:
-- Author: Jeisson Juanias
-- =============================================

ALTER TRIGGER [dbo].[ActualizarHospital]


ON [dbo].[Hospital]
AFTER UPDATE
AS
BEGIN

SET NOCOUNT ON;

UPDATE t
SET t.Hospital_Cod = i.Hospital_Cod
FROM
inserted i
INNER JOIN deleted d ON i.Nombre = d.Nombre AND i.Hospital_Cod <> d.Hospital_Cod
INNER JOIN Plantilla t ON t.Hospital_Cod = d.Hospital_Cod

SELECT 'Datos Actualizados' as Mensaje


SELECT * FROM inserted

END
Jeisson Duban Juanias Villarraga
ID: 351997
6) Crear un Trigger en la tabla plantilla. Cuando actualicemos la tabla plantilla, debemos
comprobar que el hospital que actualizamos existe, si intentamos actualizar el código de
hospital, no podremos hacerlo si no existe relación con algún código de hospital.

Query:

-- =============================================
-- Author: Jeisson Juanias
-- Create date: 22-10-2020
-- =============================================
ALTER TRIGGER dbo.ActualizarPlantilla
ON [dbo].[Plantilla]
FOR UPDATE
AS
BEGIN

DECLARE @COD_HOSPITAL AS INT

SELECT @COD_HOSPITAL = Hospital_Cod FROM inserted

If NOT EXISTS(SELECT * FROM Hospital WHERE Hospital_Cod = @COD_HOSPITAL)


BEGIN
RAISERROR('El codigo ingresado no existe en la tabla Hospital.',10,1)
ROLLBACK TRANSACTION
END

END
GO
Jeisson Duban Juanias Villarraga
ID: 351997
7) Modificar el Trigger del ejercicio 4, utilizando transacciones y control de errores, si la
operación es correcta, mostrar un mensaje positivo, si la operación no es correcta mostrar el
error y un mensaje que indique que no se ha llevado a cabo la operación.

USE [Hospital_BD]
GO
/****** Object: Trigger [dbo].[ControlInsert] Script Date: 22/10/2020 8:53:36 p.
m. ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author: Jeisson Juanias
-- Create date: 22-10-2020
-- =============================================
ALTER TRIGGER [dbo].[ControlInsert]
ON [dbo].[Emp]
AFTER INSERT
AS
BEGIN

SET NOCOUNT ON;

BEGIN TRANSACTION
BEGIN TRY

INSERT INTO Control_BD


(No_Empleado, Usuario, FechaOperacion, TipoOperacion)
SELECT Emp_No, SYSTEM_USER, GETDATE(), 'iNSERCION' FROM inserted

COMMIT TRANSACTION

END TRY

BEGIN CATCH

/* Ocurrió un error, deshacemos los cambios*/


ROLLBACK TRANSACTION
PRINT 'Ha ocurrido un error!'

END CATCH
END
Jeisson Duban Juanias Villarraga
ID: 351997
8) crear un trigger que guarde los datos en la tabla controltrigger cuando se realice la baja de
un empleado.

-- =============================================
-- Author: Jeisson Juanias
-- Create date: 22-10-2020
-- =============================================
CREATE TRIGGER dbo.BajaEmpleado
ON [dbo].[Emp]
AFTER DELETE
AS
BEGIN

SET NOCOUNT ON;

INSERT INTO controltrigger


(Emp_No, Apellido, Oficio, Dir, Fecha_Alt, Salario, Comision, Dept_No)
SELECT * FROM deleted

END
GO

9) Crear un Trigger que guarde los datos en la tabla Control_Trigger cuando se realice una
modificación en un empleado. Guardar la hora de la actualización en un campo aparte en la
tabla Control Trigger. (Añadir un campo)

-- =============================================
-- Author: Jeisson Juanias
-- Create date: 22-10-2020
-- =============================================
CREATE TRIGGER dbo.UpdateEmpleado
ON [dbo].[Emp]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;

INSERT INTO controltrigger


(Emp_No, Apellido, Oficio, Dir, Fecha_Alt, Salario,
Comision, Dept_No,Hora_Actualizzacion )
SELECT *, getdate() FROM deleted
END
GO

You might also like