View
260
Download
0
Category
Preview:
Citation preview
04/05/16
1
TRIGGERS (SQL) Sistemas de Informações Geográficas
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA SUL DE MINAS GERAIS Câmpus Inconfidentes
O QUE É UMA TRIGGER
• Uma trigger é uma especificação que o banco de dados deve executar, normalmente uma função.
• As triggers podem estar associadas a: tabelas, views, e chaves estrangeiras de tabelas.
• Nas tabelas e chaves estrangeiras elas podem estar associadas a operações de: INSERT, UPDATE e DELETE.
04/05/16
2
CREATE TRIGGER
CREATE TRIGGER
• Uma trigger pode ser especificada para executar uma ação:
• Antes (BEFORE)
• Depois (AFTER)
• Ao invés de (INSTEAD OF) deve estar acompanhada do comando FOR EACH ROW e somente pode ser usado em views.
04/05/16
3
CREATE TRIGGER RESUMO
CREATE TRIGGER RESUMO
• Parâmetros
NAME – o nome que deve ser dado a trigger. Deve ser distinto de outro nome de trigger usado na mesma tabela; BEFORE; AFTER e INSTEAD OF – determina quando a função é executada pelo evento. EVENT – especifica o evento que será executado pela trigger. Pode ser: INSERT, UPDATE ou DELETE. TABLE_NAME – é o nome da tabela, view ou chave estrangeira. CONDITION – uma expressão boleana que determina quando a trigger será executada. Se a clausula WHEN for usada a trigger somente será executada quando a condição retornar TRUE. FUNCTION_NAME – é o nome da função que é executada quando a condição da trigger for aceita.
04/05/16
4
CREATE TRIGGER EXEMPLOS
CREATE TRIGGER EXEMPLOS
04/05/16
5
CREATE TRIGGER EXEMPLOS PRÁTICOS
CREATE OR REPLACE FUNCTION calc_area() RETURNS trigger AS $BODY$ BEGIN
NEW.area := st_area(NEW.the_geom); RETURN NEW;
END; $BODY$ LANGUAGE plpgsql;
CREATE TRIGGER calc_area_trig BEFORE INSERT OR UPDATE ON reservatorio FOR EACH ROW EXECUTE PROCEDURE calc_area();
CREATE TRIGGER EXEMPLOS PRÁTICOS
CREATE OR REPLACE FUNCTION calc_comprimento() RETURNS trigger AS $BODY$ BEGIN
NEW.comprimento := st_length(NEW.the_geom); RETURN NEW;
END; $BODY$ LANGUAGE plpgsql; CREATE TRIGGER calc_compri_trig BEFORE INSERT OR UPDATE ON ramal FOR EACH ROW EXECUTE PROCEDURE calc_comprimento();
04/05/16
6
DÚVIDAS
e-mail: luciano.barbosa@ifsuldeminas.edu.br
Fonte: BOLSTAD (2012).
Recommended