Gestion De Bases De Datos
EJERCICIOS TEMA 10 TRIGGERS
1.-Una empresa almacena los datos de sus empleados en una tabla denominada
"empleados" y en otra tabla llamada "secciones", el código de lasección y el sueldo
máximo de cada una de ellas. Base de datos TEMA10
a)- Crear un disparador para que se ejecute cada vez que una instrucción "insert"
ingrese datos en "empleados"; el mismo debeverificar que el sueldo del empleado
no sea mayor al sueldo máximo establecido para la sección, si lo es, debe mostrar
un mensaje indicando tal situación y deshacer la transacción.
create triggerinsertar_empleados
on empleados
for insert
as
declare @SMAX decimal (8,2)
select @SMAX=seccion.sueldo
from seccion, inserted
where codigo = inserted.seccion
b)- Ingresar un nuevo registro en"empleados" cuyo sueldo sea menor o igual al
establecido para la sección.
insert into empleados
values (18,88888888,'f','Muñoz','Belén','Salsipuedes 4',2,1,'casado','23/4/1888','15/3/1990',1700)
c)-Verificar que el disparador se ejecutó consultando la tabla "empleados":
select *from empleados;
no se ingreso en la tabla
d)- Intentar ingresar un nuevo registro en "empleados" cuyo sueldo sea mayoral
establecido para la sección.
El disparador se ejecutó mostrando un mensaje y la transacción se deshizo
insert into empleados
values (18,88888888,'f','Muñoz','Belén','Salsipuedes4',2,1,'casado','23/4/1888','15/3/1990',1900)
Mens 208, Nivel 16, Estado 1, Procedimiento insertar_empleados, Línea 8
El nombre de objeto 'seccion' no es válido.
e)- Verificar que el registro no se agregó en"empleados":
select *from empleados;
f)- Intentar ingresar un empleado con código de sección inexistente.
Aparece un mensaje de error porque se viola la restricción "foreign key"; el trigger
no llegóa ejecutarse.
insert into empleados
values (18,88888888,'f','Muñoz','Belén','Salsipuedes 4',5,1,'casado','23/4/1888','15/3/1990',1900)
Mens. 547, Nivel 16, Estado 0, Línea 1
Instrucción INSERT...
Regístrate para leer el documento completo.