Sie sind auf Seite 1von 3

use GESTCOMB; /* Trigger que depois de cada registo na tabela Consumo actualiza a tabela departamento (actualiza consumo) entre

a data inicio e data fim no departameno */ create trigger actual_cons on dbo.consumo for insert as begin if exists (select quantidade from inserted) update dbo.departamento set consumo = consumo + (select quantidade from inserted) where id = (select id_departamento from inserted) and (select data from inserted) >= data_inicio and (select data from inserted) <=data_fim end; /* verifica se o consumo na tabela departamento menor ou igual ao quantidade_estipulada na tabela consumo_limite */ select * from consumo; select * from departamento; select * from consumo_limite; create trigger ver_consumo on dbo.departamento after update as begin if ( (select consumo from INSERTED) < (select lim.quantidade_estipulado from consumo_limite lim where (select id from INSERTED) = lim.id_departamento) ) print 'Credito Disponivel' else print 'Sem Credito' end;

/*Trigger que no permite o consumo se o departamento j ultrapassou o consumo estipulado e este estiver prximo a ultrapassar o consumo maximo e que no permite o consumo se a quantidade for maior que uma certa quantidade estipulada*/ drop trigger nao_permitido; create trigger nao_permitido on consumo instead of insert AS begin declare @consumo numeric (5,0); declare @id_depart int; select @id_depart=id_departamento from inserted set @consumo = dbo.obter_cons_depart(@id_depart) if ( @consumo > (select (consumo_maximo - 4) from consumo_limite lim where (select id_departamento from inserted) = lim.id_departamento --and (select id from departamento) = (select id from inserted) ) ) print 'No tem Permisso de fazer mais consumo' else begin if( (select quantidade from inserted) > 5) print 'Quantidade no pode ser superior a 5' else insert into dbo.consumo (id_departamento, id_motorista_veiculo, id_posto_abast, id_combustivel, data, quantidade) values ( (select id_departamento from inserted), (select id_motorista_veiculo from inserted), (select id_posto_abast from inserted), (select id_combustivel from inserted), (select data from inserted), (select quantidade from inserted) ) 2

end end; /* else insert into dbo.consumo (id_departamento, id_motorista_veiculo, id_posto_abast, id_combustivel, data, quantidade) values ( (select id_departamento from inserted), (select id_motorista_veiculo from inserted), (select id_posto_abast from inserted), (select id_combustivel from inserted), (select data from inserted), (select quantidade from inserted) ) end begin if( (select quantidade from inserted) > 5) print 'Quantidade no pode ser superior a 5' */

Das könnte Ihnen auch gefallen