amily: Arial"> 

capaSQL20.JPG

 

Clique aqui para ler todos os artigos desta edição

 

Usando triggers no PostgreSQL

Gustavo Bartz Guedes

Quase sempre devemos validar ou averiguar informações antes de efetivar um ou mais comandos SQL. Os triggers, ou gatilhos, são recursos dos SGBDs que auxiliam no reforço da integridade referencial de um banco de dados, definindo operações que serão executadas quando um determinado evento ocorrer na tabela a qual está associado. O objetivo desse artigo é apresentar a criação e o funcionamento dos triggers no SGBD PostgreSQL utilizando, para isso, alguns exemplos e mostrando suas particularidades.

Create trigger

O comando responsável pela criação de um trigger é o CREATE TRIGGER, sua sintaxe é apresentada abaixo:

 

CREATE TRIGGER NomeDoTrigger { BEFORE | AFTER } { evento [ OR ... ] }

ON tabela [ FOR [ EACH ] { ROW | STATEMENT } ]

EXECUTE PROCEDURE NomeDaFuncao ( argumentos )

 

Onde:

·   NomeDoTrigger: define o nome do trigger.

·   Before ou After: define se o trigger será executado antes ou depois da ação que o disparou.

·   Evento: indica qual ação está dispara o trigger. As ações podem ser: insert, update ou delete. O mesmo trigger pode ser disparado por diferentes ações, exemplo: insert or update.

·   Tabela: a tabela a qual o trigger está associado.

·   For each row: indica que o trigger será executado para cada linha alterada pela ação que o disparou (row-level).

·   For each statement: indica que o trigger será executado uma única vez para a ação que o disparou. Essa cláusula só é suportada a partir da versão 7.4.

·   NomeDaFuncao: o nome da função que será executada quando o trigger for disparado.

·   Argumentos: argumentos a serem passados para a função de trigger.

Funções de trigger

No PostgreSQL, um trigger sempre está associado a uma função, chamada função de trigger. Essas funções podem ser escritas em diversas linguagens como: perl e python, dentre outras. Para esse artigo, o foco é na linguagem PL/pgSQL.

Uma função de trigger tem acesso a variáveis especiais (ver Tabela 1).

      

Nome

Tipo

...

Quer ler esse conteúdo completo? Tenha acesso completo