PostgreSQL CREATE TRIGGER

Summary: neste tutorial, você aprenderá como usar o comando PostgreSQL CREATE TRIGGER para criar um trigger.

Para criar um novo trigger no PostgreSQL, siga estes passos:

  • Primeiro, crie uma função trigger usando o comando CREATE FUNCTION.
  • Segundo, ligue a função de trigger a uma tabela usando CREATE TRIGGER instrução.

Se você não está familiarizado com a criação de uma função definida pelo usuário, você pode verificar a seção PL/pgSQL.

Criar sintaxe da função de trigger

Uma função de trigger é similar a uma função definida pelo usuário normal. No entanto, uma função de trigger não aceita nenhum argumento e tem um valor de retorno com o tipo trigger.

O seguinte ilustra a sintaxe da criação da função de trigger:

Code language: SQL (Structured Query Language) (sql)

Note que você pode criar uma função de trigger usando qualquer linguagem suportada pelo PostgreSQL. Neste tutorial, vamos usar PL/pgSQL.

A função trigger recebe dados sobre seu ambiente de chamada através de uma estrutura especial chamada TriggerData que contém um conjunto de variáveis locais.

Por exemplo, OLD e NEW representam os estados da linha na tabela antes ou depois do evento de acionamento.

PostgreSQL também fornece outras variáveis locais precedidas por TG_ como TG_WHEN, e TG_TABLE_NAME.

Após você definir uma função trigger, você pode vinculá-la a um ou mais eventos trigger como INSERT, UPDATE, e DELETE.

Introduction to PostgreSQL CREATE TRIGGER statement

O comando CREATE TRIGGER cria um novo trigger. O seguinte ilustra a sintaxe básica da instrução CREATE TRIGGER:

Code language: SQL (Structured Query Language) (sql)

Nesta sintaxe:

Primeiro, especifique o nome do trigger após as TRIGGERpalavras-chave.

Segundo, especifique o tempo que causa o disparo do trigger. Pode ser BEFORE ou AFTER ocorre um evento.

Terceiro, especifique o evento que invoca o gatilho. O evento pode ser INSERT , DELETE, UPDATE ou TRUNCATE.

Quarto, especifique o nome da tabela associada ao gatilho após a palavra-chave ON.

Fifth, especifique o tipo de trigger que pode ser:

  • Travador de nível de linha que é especificado pela cláusula FOR EACH ROW.
  • Travador de nível de linha que é especificado pela cláusula FOR EACH STATEMENT.

A disparo em nível de linha é disparado para cada linha enquanto um disparo em nível de declaração é disparado para cada transação.

Suponha que uma tabela tenha 100 linhas e dois disparos que serão disparados quando um evento DELETE ocorrer.

Se a instrução DELETE apagar 100 linhas, o disparo em nível de linha será disparado 100 vezes, uma vez para cada linha apagada. Por outro lado, um gatilho em nível de declaração será disparado uma vez, independente de quantas linhas forem excluídas.

Finalmente, especifique o nome da função de gatilho após as palavras-chave EXECUTE PROCEDURE.

PostgreSQL CREATE TRIGGER exemplo

A seguinte instrução cria uma nova tabela chamada employees:

Code language: SQL (Structured Query Language) (sql)

Suponha que quando o nome de um funcionário mudar, você queira registrar as mudanças em uma tabela separada chamada employee_audits :

Code language: SQL (Structured Query Language) (sql)

Primeiro, crie uma nova função chamada log_last_name_changes:

Code language: SQL (Structured Query Language) (sql)

A função insere o sobrenome antigo na tabela employee_audits incluindo o id do empregado, sobrenome, e a hora da mudança se o sobrenome de um empregado mudar.

O OLD representa a linha antes da atualização enquanto o NEW representa a nova linha que será atualizada. O OLD.last_name retorna o sobrenome antes da atualização e o NEW.last_name retorna o novo sobrenome.

Segundo, vincule a função de acionamento à tabela employees. O nome do gatilho é last_name_changes. Antes que o valor da coluna last_name seja atualizado, a função trigger é automaticamente invocada para registrar as alterações.

Code language: SQL (Structured Query Language) (sql)

Terceiro, insira algumas linhas na tabela employees:

Code language: SQL (Structured Query Language) (sql)

Quarto, examine o conteúdo da tabela employees:

Code language: SQL (Structured Query Language) (sql)

Suponha que Lily Bush mude seu sobrenome para Lily Brown.

Fifth, atualize o sobrenome da Lily para o novo:

Code language: SQL (Structured Query Language) (sql)

Seventh, verifique se o sobrenome de Lily foi atualizado:

Code language: SQL (Structured Query Language) (sql)

Como você pode ver na saída, o sobrenome da Lily foi atualizado.

Oitava, verifique o conteúdo da tabela employee_audits:

Code language: SQL (Structured Query Language) (sql)

A alteração foi registrada na tabela employee_audits pelo gatilho.

Neste tutorial, você aprendeu como usar o PostgreSQL CREATE TRIGGER para criar um novo trigger.

  • Este tutorial foi útil ?
  • Sim Não

Deixe uma resposta

O seu endereço de email não será publicado.