Banner Hospedagem de Sites
01/05/2024

Trigger Oracle Exemplo

Um Trigger Oracle é um objeto de banco de dados que é acionado automaticamente em resposta a um evento específico, como uma alteração em uma tabela. Ele é uma parte essencial da administração de banco de dados, pois permite automatizar tarefas e garantir a integridade dos dados.

O principal objetivo de um Trigger Oracle é executar um conjunto de instruções quando um evento ocorre. Isso pode incluir a atualização de outras tabelas, validação de dados ou execução de cálculos complexos. Os Triggers Oracle são altamente personalizáveis e podem ser configurados para atender às necessidades específicas de um banco de dados.

A importância do Trigger Oracle na administração de banco de dados é inegável. Ele permite que os administradores automatizem tarefas rotineiras, melhorem a eficiência do banco de dados e garantam a integridade dos dados. Além disso, os Triggers Oracle podem ser usados para implementar regras de negócios complexas e garantir que as operações no banco de dados estejam em conformidade com essas regras.

Como criar um Trigger Oracle?

Criar um Trigger Oracle envolve alguns passos simples. Primeiro, é necessário definir o evento que acionará o Trigger, como uma inserção, atualização ou exclusão em uma tabela específica. Em seguida, é preciso definir as ações que serão executadas quando o evento ocorrer.

A sintaxe básica para criar um Trigger Oracle é a seguinte:

CREATE OR REPLACE TRIGGER nome_do_trigger
{BEFORE | AFTER | INSTEAD OF} {INSERT | UPDATE | DELETE}
ON nome_da_tabela
[REFERENCING OLD AS old NEW AS new]
[FOR EACH ROW]
DECLARE
— declarações de variáveis
BEGIN
— código do Trigger
END;

A cláusula BEFORE indica que o Trigger será acionado antes do evento ocorrer, a cláusula AFTER indica que o Trigger será acionado após o evento ocorrer e a cláusula INSTEAD OF indica que o Trigger substituirá o evento.

Aqui estão alguns exemplos de código para criar um Trigger Oracle:

Exemplo 1: Trigger Before

CREATE OR REPLACE TRIGGER atualizar_saldo
BEFORE INSERT ON contas
FOR EACH ROW
BEGIN
:new.saldo := :new.saldo + :new.valor;
END;

Neste exemplo, o Trigger é acionado antes de uma inserção na tabela “contas”. Ele atualiza o saldo da conta adicionando o valor da inserção ao saldo existente.

Exemplo 2: Trigger After

CREATE OR REPLACE TRIGGER registrar_log
AFTER UPDATE ON funcionarios
FOR EACH ROW
BEGIN
INSERT INTO logs (id_funcionario, data, acao)
VALUES (:new.id, SYSDATE, ‘Atualização de dados’);
END;

Neste exemplo, o Trigger é acionado após uma atualização na tabela “funcionarios”. Ele registra um log na tabela “logs” com informações sobre a atualização realizada.

Tipos de Trigger Oracle

Existem três tipos principais de Triggers Oracle: Before, After e Instead Of.

Um Trigger Before é acionado antes do evento ocorrer. Ele pode ser usado para validar dados, realizar cálculos ou atualizar outras tabelas antes que a operação seja concluída. Um exemplo comum de uso de um Trigger Before é garantir que um valor inserido em uma tabela esteja dentro de um intervalo específico.

Um Trigger After é acionado após o evento ocorrer. Ele pode ser usado para registrar logs, enviar notificações ou executar outras ações que não afetem diretamente a operação em si. Um exemplo comum de uso de um Trigger After é registrar a data e hora de uma atualização em uma tabela de logs.

Um Trigger Instead Of é acionado no lugar do evento. Ele é usado principalmente em tabelas que possuem uma visão associada a elas. Quando uma operação é realizada na visão, o Trigger Instead Of é acionado e pode executar ações personalizadas antes de realizar a operação na tabela subjacente.

Diferença entre Trigger Before e After

A principal diferença entre os Triggers Before e After está no momento em que eles são acionados. Um Trigger Before é acionado antes do evento ocorrer, enquanto um Trigger After é acionado após o evento ocorrer.

Os Triggers Before são usados principalmente para validar dados e realizar ações que afetam diretamente a operação em si. Por exemplo, um Trigger Before pode ser usado para garantir que um valor inserido em uma tabela esteja dentro de um intervalo específico ou para atualizar outras tabelas antes que a operação seja concluída.

Os Triggers After, por outro lado, são usados principalmente para executar ações que não afetam diretamente a operação em si. Por exemplo, um Trigger After pode ser usado para registrar logs, enviar notificações ou executar outras ações que são necessárias após a conclusão da operação.

Como testar um Trigger Oracle?

Existem várias maneiras de testar um Trigger Oracle para garantir que ele esteja funcionando corretamente. Aqui estão alguns métodos comuns:

1. Inserir, atualizar ou excluir dados na tabela que aciona o Trigger e verificar se as ações definidas no Trigger são executadas corretamente.

2. Usar a instrução “SHOW TRIGGERS” para exibir informações sobre o Trigger, como o nome, a tabela associada e o evento acionador.

3. Usar a instrução “DESCRIBE nome_do_trigger” para exibir informações detalhadas sobre o Trigger, como as ações definidas e as condições de acionamento.

4. Usar ferramentas de administração de banco de dados, como o Oracle SQL Developer, para visualizar e testar Triggers Oracle.

Aqui estão alguns exemplos de testes de Trigger Oracle:

Exemplo 1: Teste de um Trigger Before

— Inserir um valor fora do intervalo permitido
INSERT INTO contas (id, saldo) VALUES (1, -100);

— Verificar se o saldo foi atualizado corretamente
SELECT saldo FROM contas WHERE id = 1;

Neste exemplo, estamos testando um Trigger Before que valida o saldo inserido na tabela “contas”. Se o saldo estiver fora do intervalo permitido, o Trigger não permitirá a inserção.

Exemplo 2: Teste de um Trigger After

— Atualizar os dados de um funcionário
UPDATE funcionarios SET salario = 5000 WHERE id = 1;

— Verificar se o log foi registrado corretamente
SELECT * FROM logs WHERE id_funcionario = 1;

Neste exemplo, estamos testando um Trigger After que registra um log na tabela “logs” após uma atualização na tabela “funcionarios”. Verificamos se o log foi registrado corretamente.

Como desativar um Trigger Oracle?

Às vezes, pode ser necessário desativar um Trigger Oracle temporariamente ou permanentemente. Aqui estão algumas maneiras de fazer isso:

1. Desativar temporariamente um Trigger Oracle:

ALTER TRIGGER nome_do_trigger DISABLE;

Esta instrução desativa temporariamente o Trigger Oracle, impedindo que ele seja acionado. O Trigger ainda existe no banco de dados, mas não será executado até que seja ativado novamente.

2. Desativar permanentemente um Trigger Oracle:

DROP TRIGGER nome_do_trigger;

Esta instrução exclui permanentemente o Trigger Oracle do banco de dados. O Trigger não existirá mais e não será acionado.

Aqui estão alguns exemplos de código para desativar um Trigger Oracle:

Exemplo 1: Desativar temporariamente um Trigger Before

ALTER TRIGGER atualizar_saldo DISABLE;

Neste exemplo, estamos desativando temporariamente o Trigger Before chamado “atualizar_saldo”.

Exemplo 2: Desativar permanentemente um Trigger After

DROP TRIGGER registrar_log;

Neste exemplo, estamos excluindo permanentemente o Trigger After chamado “registrar_log”.

Como excluir um Trigger Oracle?

Excluir um Trigger Oracle é um processo simples, mas é importante tomar alguns cuidados para garantir que o Trigger seja excluído corretamente e sem causar problemas no banco de dados.

Antes de excluir um Trigger Oracle, é recomendável fazer um backup do banco de dados para evitar a perda de dados importantes. Além disso, é importante verificar se o Trigger está sendo usado por outros objetos do banco de dados, como visões ou procedimentos armazenados. Se o Trigger estiver sendo usado por outros objetos, é necessário atualizá-los ou excluí-los antes de excluir o Trigger.

Para excluir um Trigger Oracle, basta usar a seguinte sintaxe:

DROP TRIGGER nome_do_trigger;

Aqui estão alguns exemplos de código para excluir um Trigger Oracle:

Exemplo 1: Excluir um Trigger Before

DROP TRIGGER atualizar_saldo;

Neste exemplo, estamos excluindo o Trigger Before chamado “atualizar_saldo”.

Exemplo 2: Excluir um Trigger After

DROP TRIGGER registrar_log;

Neste exemplo, estamos excluindo o Trigger After chamado “registrar_log”.

Exemplo prático de Trigger Oracle

Para ilustrar o uso de um Trigger Oracle em um cenário real, vamos considerar um sistema de gerenciamento de estoque. Suponha que temos duas tabelas: “produtos” e “estoque”. A tabela “produtos” armazena informações sobre os produtos, como o nome e o preço, enquanto a tabela “estoque” armazena informações sobre a quantidade disponível de cada produto.

Vamos criar um Trigger Oracle que atualize automaticamente a quantidade disponível de um produto no estoque sempre que uma venda for registrada na tabela “vendas”. O Trigger deve subtrair a quantidade vendida do estoque do produto correspondente.

Aqui está o código do Trigger Oracle utilizado no exemplo:

CREATE OR REPLACE TRIGGER atualizar_estoque
AFTER INSERT ON vendas
FOR EACH ROW
BEGIN
UPDATE estoque SET quantidade = quantidade – :new.quantidade
WHERE id_produto = :new.id_produto;
END;

Neste exemplo, o Trigger é acionado após uma inserção na tabela “vendas”. Ele atualiza a quantidade disponível do produto correspondente no estoque, subtraindo a quantidade vendida.

Os resultados obtidos com o uso do Trigger Oracle são uma atualização automática do estoque sempre que uma venda é registrada. Isso garante que a quantidade disponível de cada produto seja sempre precisa e atualizada.

Benefícios de usar Trigger Oracle

O uso de Triggers Oracle traz vários benefícios para a administração de banco de dados. Aqui estão algumas vantagens do uso de Triggers Oracle:

1. Automatização de tarefas: Os Triggers Oracle permitem automatizar tarefas rotineiras, como atualizações em cascata ou validação de dados, reduzindo a necessidade de intervenção manual.

2. Garantia da integridade dos dados: Os Triggers Oracle podem ser usados para impor regras de negócios e garantir que as operações no banco de dados estejam em conformidade com essas regras, evitando a inserção de dados inválidos ou inconsistentes.

3. Melhoria da performance do banco de dados: Os Triggers Oracle podem melhorar a performance do banco de dados ao executar ações complexas em segundo plano, sem afetar diretamente as operações realizadas pelos usuários.

4. Personalização das operações no banco de dados: Os Triggers Oracle são altamente personalizáveis e podem ser configurados para atender às necessidades específicas de um banco de dados, permitindo a implementação de regras de negócios complexas e o controle preciso das operações realizadas.

Aqui estão alguns exemplos de benefícios obtidos com o uso de Triggers Oracle:

– Redução do tempo gasto na atualização manual do estoque após uma venda.
– Garantia de que apenas valores válidos sejam inseridos em uma tabela.
– Registro automático de logs para auditoria e rastreamento de alterações no banco de dados.

Considerações finais sobre Trigger Oracle

Em conclusão, os Triggers Oracle são uma parte essencial da administração de banco de dados, permitindo automatizar tarefas, garantir a integridade dos dados e melhorar a performance do banco de dados. Eles podem ser criados facilmente usando a sintaxe básica do Oracle e são altamente personalizáveis para atender às necessidades específicas de um banco de dados.

Ao utilizar Triggers Oracle, é importante testá-los adequadamente para garantir que eles estejam funcionando corretamente. Existem várias maneiras de testar Triggers Oracle, como inserir, atualizar ou excluir dados na tabela que aciona o Trigger e verificar se as ações definidas no Trigger são executadas corretamente.

Além disso, é importante saber como desativar ou excluir um Trigger Oracle quando necessário. Desativar temporariamente um Trigger pode ser útil quando é necessário interromper temporariamente suas ações, enquanto excluir permanentemente um Trigger pode ser necessário quando ele não é mais necessário ou está causando problemas no banco de dados.

Em resumo, o uso de Triggers Oracle traz vários benefícios para a administração de banco de dados, como automatização de tarefas, garantia da integridade dos dados e melhoria da performance do banco de dados. No entanto, é importante utilizar Triggers com cautela, pois elas podem afetar o desempenho do sistema se não forem bem projetadas e implementadas. Além disso, é necessário ter um bom entendimento das regras de negócio e das operações que serão realizadas pela Trigger, a fim de evitar problemas de inconsistência ou comportamentos indesejados. É recomendado também realizar testes rigorosos antes de implantar as Triggers em um ambiente de produção, a fim de garantir que elas estejam funcionando corretamente e não causem impactos negativos no sistema.

Clique aqui para acessar outros artigos de Banco de Dados.

Share

Luis Alexandre da Silva

Professor e Consultor de tecnologia em desenvolvimento de sistemas.Possui mestrado em Ciência da Computação pela UNESP (2016), especialização em Gestão Integrada de Pessoas e Sistemas de Informação pela FIB (2008) e graduação em Análise de Sistemas pela Universidade do Sagrado Coração (1997).Por fim, tem experiência em Gerenciamento de Projetos, Linguagens de Programação e Banco de Dados. Atuando principalmente nos seguintes temas: ensino, gerenciamento de projetos, ITIL, Desenvolvimento WEB e processos BPO.

Você pode querer ver também...