Sunteți pe pagina 1din 4

Problema: La empresa MiSocio, almacena los datos de sus empleados en una tabla denominada "empleados".

1. Creamos la Base de Datos MiSocio.


create database MiSocio;

2. Ingresamos a la Base de Datos MiSocio.


Use MiSocio;

3. Creamos la tabla empleados, con la siguiente estructura:


create table empleados( documento varchar(4) not null, nombre varchar(30) not null, domicilio varchar(30), seccion varchar(20), constraint PK_empleados primary key(documento), );

4. Ingresamos algunos registros:


insert into empleados values('0001','Ana Acosta','Bulnes 56','Secretaria'); insert into empleados values('0002','Bernardo Bustos','Bulnes 188','Contaduria'); insert into empleados values('0003','Carlos Caseres','Caseros 364','Sistemas'); insert into empleados values('0004','Diana Duarte','Colon 1234','Sistemas'); insert into empleados values('0005','Diana Duarte','Colon 897','Sistemas');

insert into empleados values('0005','Matilda Morales','Colon 542','Gerencia');

5. Creamos un disparador para que no permita eliminar ms de un registro a la vez de la tabla empleados:
create trigger dis_empleados_borrar on empleados for delete as if (select count(*) from deleted)>1 begin raiserror('No puede eliminar ms de un 1 empleado', 16, 1) rollback transaction end;

6. Creamos un disparador para que no permita actualizar el campo "documento" de la tabla "empleados":
create trigger dis_empleados_actualizar on empleados for update as if update(documento) begin raiserror('No puede modificar el documento de los empleados', 16, 1) rollback transaction end;

7. Creamos un disparador para que no permita ingresar empleados en la seccin "Gerencia":


create trigger dis_empleados_insertar on empleados for insert as if (select seccion from inserted)='Gerencia' begin raiserror('No puede ingresar empleados "Gerencia".', 16, 1) rollback transaction end;

en

la

seccin

8. Intentamos borrar varios empleados:


delete from empleados where domicilio like 'Bulnes%';

El trigger se dispara, muestra el mensaje y deshace la transaccin.

9. Deshabilitamos el trigger para el evento de eliminacin:


alter table empleados disable trigger dis_empleados_borrar;

10. Borramos varios empleados:


delete from empleados where domicilio like 'Bulnes%';

El trigger no se dispar porque est deshabilitado. Podemos verificar que los registros de eliminaron recuperando los datos de la tabla:
select *from empleados;

11. Intentamos modificar un documento:


update empleados set documento='0001' where documento = '0007';

El trigger se dispara, muestra el mensaje y deshace la transaccin. 12. Intentamos ingresar un nuevo empleado en "Gerencia":
insert into empleados 123','Gerencia'); values('0008','Juan Juarez','Jamaica

El trigger se dispara, muestra el mensaje y deshace la transaccin. 13. Deshabilitamos los disparadores de insercin y actualizacin definidos sobre "empleados":
alter table empleados disable trigger dis_empleados_actualizar, dis_empleados_insertar;

14. Ejecutamos la sentencia de actualizacin del documento:


update empleados set documento='0001' where documento='0007';

15. El trigger no se dispara porque est deshabilitado, el documento se actualiz. verifiqumoslo:


select *from empleados;

16. Ingresar un nuevo empleado en "Gerencia":


insert into empleados 123','Gerencia'); values('0008','Juan Juarez','Jamaica

El trigger "dis_empleados_insertar" no se dispara porque est deshabilitado, el registro se agreg a la tabla. Verifiqumoslo:
select *from empleados;

17. Habilitamos todos los triggers de la tabla "empleados":


alter table empleados enable trigger all;

Ya no podemos eliminar ms de un registro, actualizar un documento ni ingresar un empleado en la seccin "Gerencia"; lo intentamos:
update empleados set documento='0008' where documento='0001';

El trigger se dispara (est habilitado), muestra el mensaje y deshace la transaccin.

S-ar putea să vă placă și