Laboratorio de Banco de Dados

Propaganda
Stored Procedures e Triggers
Prof. Daniela Barreiro Claro
Stored Procedures


São procedimentos armazenados de modo
persistente
São uteis nas seguintes circunstâncias:

Programa de BD é necessario para varias
aplicações, pode ser armazenado no servidor e
invocado por quaisquer programas.


Reduz a duplicação dos esforços e melhora a
modularidade
Executar um programa no servidor para reduzir a
transferência de dados cliente/servidor
Prof. Daniela Barreiro Claro
2
Stored Procedures

Forma geral de criação
CREATE PROCEDURE <nome do
procedimento>(<parametros>)
<declarações locais>
<corpo do procedimento>
Prof. Daniela Barreiro Claro
3
Triggers (Gatilhos)



Os triggers fazem parte da SQL 99
São regras que especificam ações
disparadas automaticamente por meio de
certos eventos.
Segue o modelo ECA


Evento-Condição-Ação
Evento


São os eventos que ativam as regras.
São operações de atualização em banco de
dados aplicadas explicitamente
Prof. Daniela Barreiro Claro
4
Triggers (Gatilhos)

Condição



É a condição que determina se a ação da regra
deve ser executada
Uma vez ocorrido o evento, uma condição
opcional pode ser avaliada
Se a condição for avaliada o seu resultado deve
ser verdadeiro para que a ação da regra seja
disparada
Prof. Daniela Barreiro Claro
5
Triggers (Gatilhos)

Ação


É a ação a ser executada
É normalmente uma série de declarações SQL,
mas também pode ser uma transação ou uma
SP.
Prof. Daniela Barreiro Claro
6
Exemplo de Triggers no MySQL
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW
INSERT INTO test2 SET a2 = NEW.a1;
INSERT INTO test1 VALUES (1);
create trigger trg1 before insert on t1 for each row set @a:=new.a;
Prof. Daniela Barreiro Claro
7
Exemplo de Trigger no PG
create table teste(
a varchar(255),
b varchar(255))
create table teste2(
c varchar(255),
d varchar(255),
hora date)
CREATE LANGUAGE plpgsql;
create function gera_log() returns trigger as
$$
Begin
insert into teste2(c,d, hora) values (TG_OP, user, now());
return new;
end;
$$ language 'plpgsql';
create trigger trg_log after insert or update or delete on teste for each row execute
procedure gera_log();
Prof. Daniela Barreiro Claro
8
Download