Академический Документы
Профессиональный Документы
Культура Документы
create | function hello(texto char(20)) returns char(50) as $$ Begin return concat('Hello: ', texto, '!'); end; $$ language 'plpgsql';
a mdia.
create function media_nota(nome_aluno varchar(20)) returns float as $$ declare n1 float;n2 float;media float; begin select bim1, bim2 into n1 , n2 from nota where aluno = nome_aluno; media := (n1+n2)/2; return media; end; $$ language 'plpgsql'; -- Utilizando a funo media_nota para o aluno Pedro; select media_nota('Pedro');
a mdia.
-- Criar uma nova tabela chamada nota_nova create table nota_nova ( aluno char(20), nota1 float, nota2 float, nota3 float, nota4 float ); insert into nota_nova (aluno, nota1, nota2, nota3, nota4) values ('Pedro', 5.00, 6.50, 7.50, 6.50), ('Maria', 10.00, 9.00, 10.00, 8.00), ('Antonio', 7.00, 8.50, 9.50, 7.50); select
* from nota_nova;
a mdia.
create function media_nota_nova(nome_aluno varchar(20)) returns float as $$ declare n1 float;n2 float;n3 float;n4 float; media float; begin select nota1, nota2, nota3, nota4 into n1 , n2 , n3 , n4 from nota_nova where aluno = nome_aluno; media := (n1+n2+n3+n4)/4; return media; end; $$ language 'plpgsql'; -- utilizando a funcao select media_nota_nova('Pedro');
resposta a um evento especfico do banco de dados. Semelhante a um procedimento armazenado (Stored Procedure) mas tem a sua execuo disparada pelo SGBD quando ocorre um evento preestabelecido. O evento associado tentativa de execuo de operaes sobre uma tabela (incluso, excluso e alterao).
Trigger - Requisitos
Especificar quando o trigger deve ser executado Isso desmembrado em um evento que faz com que o
trigger seja verificado. uma condio que precisa ser satisfeita para que a execuo do trigger prossiga.
Especificar as aes a serem tomadas quando o trigger
executar.
Regras ECA Evento Condio Ao
Trigger - Armazenamento
Os triggers so armazenados como se fossem dados normais,
o que os torna persistentes e acessveis para todas as operaes no banco de dados. Uma vez que um trigger armazenado, o SGBD assume a responsabilidade de execut-lo quando o evento especificado ocorre e a condio correspondente satisfeita.
10
do negcio. Acessos que alterem linhas de uma tabela ou eventos que ocorram no BD podem ser registrados em outra tabela (auditoria). assegurar as restries de integridade. melhorar a segurana no acesso aos dados. melhorar o desempenho das aplicaes. reduzir o volume de dados trafegados na rede. melhorar a manuteno do software.
11
Trigger - Exemplo
Supondo que um cliente de um banco faa uma retirada de
dinheiro maior do que o seu saldo, o BD age da seguinte forma: Altera para zero o saldo do cliente Cria um emprstimo no valor da dvida para o cliente
Um depsito deseja manter um estoque mnimo de cada item Quando o estoque deste item fica menor do que o nvel
12
Triggers em SQL
Passaram a ser padro SQL em 1999; Cada SGBD utiliza sua prpria linguagem e sintaxe para
triggers; Ativao da Triggers: Antes ou depois de algum evento de adio (insert), atualizao (update) e remoo (delete) Utilizada para verificao dos dados antes ou depois da realizao do evento;
13
create trigger tr_gera_log after insert or update or delete on alterada for each row execute procedure gera_log();
Tipos de Trigger
Vamos verificar
22
23
modificar os valores antigos e novos dos campos da linha sendo alterada, atravs das variveis de ambiente:
:old representa a linha corrente prvia :new representa a linha aps a alterao
24
Tipos de Trigger
OBS: * - Alterar o valor das variveis
nesses eventos no
25
funes de incluir/ deletar/ atualizar da funo que o disparou. Um trigger pode disparar outro trigger. No pior caso ocorre uma cadeia infinita de triggers. Ex.: A insero em uma relao dispara um trigger que insere uma nova tupla na mesma tabela.
26
Triggers x Procedures/Functions
Comparativo:
27