Sobes.tech
Junior

O que são triggers numa base de dados relacional?

sobes.tech IA

Resposta da IA

Um trigger é um tipo especial de procedimento armazenado que é executado automaticamente em resposta a um evento específico numa tabela ou vista da base de dados.

Os principais eventos que acionam um trigger:

  • INSERT: Inserção de uma nova linha.
  • UPDATE: Alteração de uma linha existente.
  • DELETE: Eliminação de uma linha.

Os triggers podem ser acionados antes (BEFORE) ou depois (AFTER) da execução do evento.

Exemplos de uso de triggers:

  • Atualização automática de campos (por exemplo, data da última alteração).
  • Verificação da integridade dos dados.
  • Registro de alterações (registo em logs).
  • Atualização ou eliminação em cascata de dados relacionados.
-- Exemplo de criação de um trigger AFTER INSERT (sintaxe fictícia)
CREATE TRIGGER audit_log_trigger
AFTER INSERT ON users
FOR EACH ROW
EXECUTE FUNCTION log_user_insert();

-- Exemplo de função chamada pelo trigger
CREATE FUNCTION log_user_insert() RETURNS TRIGGER AS $$
BEGIN
  INSERT INTO audit_logs (table_name, operation, timestamp, new_data)
  VALUES ('users', 'INSERT', NOW(), row_to_json(NEW));
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

Vantagens:

  • Centralização da lógica de negócio.
  • Automação de tarefas rotineiras.
  • Melhoria da integridade dos dados.

Desvantagens:

  • Dificuldade na depuração.
  • Impacto potencial na performance.
  • Complexidade adicional na lógica da aplicação, pois parte dela é transferida para o nível do banco de dados.