Como desabilitar um gatilho no Oracle

Como Desabilitar Um Gatilho No Oracle



Acionadores de banco de dados, ou acionadores para abreviar, referem-se a procedimentos armazenados que são executados como uma resposta a uma atividade de evento em um determinado objeto de banco de dados.

Isso difere dos procedimentos armazenados padrão, que requerem invocação explícita do usuário. Como os gatilhos são automatizados, eles são acionados ou acionados quando o evento especificado ocorre, independentemente do usuário conectado ou do estado do servidor.







A maioria dos bancos de dados relacionais oferece suporte ao uso de gatilhos para executar tarefas automatizadas, como impedir transações inválidas, registrar eventos, buscar e registrar estatísticas de acesso à tabela e muito mais.



Depois que um gatilho é criado, ele sempre é executado sempre que o evento associado ocorre. No entanto, você pode querer impedir temporariamente ou permanentemente a execução de um gatilho. É aqui que o recurso de desativação do gatilho entra em ação.



Esta postagem discutirá as etapas rápidas e fáceis para desabilitar um gatilho em um banco de dados Oracle. Se você é novo em triggers Oracle e gostaria de saber como criar um, veja o seguinte link:





https://linuxhint.com/oracle-create-trigger

Criando um gatilho de teste

Antes de discutirmos os métodos de desabilitar um acionador, vamos configurar um exemplo de acionador para fins de demonstração.



NOTA : esta seção não aborda como definir ou usar os acionadores do banco de dados.

Queremos criar um gatilho que registre a atividade do usuário após uma operação de exclusão. Por exemplo, suponha que temos uma tabela sample_data com as informações conforme mostrado:

Primeiro precisamos criar uma tabela onde armazenamos os logs para cada atividade de exclusão.

O esquema da tabela é o seguinte:

criar tabela sample_data_logs(
número de identidade,
primeiro_nome varchar2(50),
endereço_ip varchar2(20),
btc_address varchar2(50),
cartão de crédito varchar2(50),
identificador varchar2(40),
delete_date data,
excluído_por varchar2(20)
);

Em seguida, precisamos definir um gatilho que é executado após um evento de exclusão. A definição do gatilho é fornecida da seguinte forma:

criar ou substituir acionador log_user
depois de deletar
em sample_data
para cada linha
declarar
action_username varchar2(20);
começar
selecione o usuário em action_username de dual;
inserir em sample_data_logs
valores (:OLD.id,
:OLD.first_name,
:OLD.ip_address,
:OLD.btc_address,
:OLD.credit_card,
:OLD.identifier,
data do sistema,
action_username);
fim;

Para testar o gatilho, vamos executar uma operação de exclusão da tabela sample_data conforme mostrado:

excluir de sample_data onde id = 1;

Por fim, podemos verificar a tabela de logs para garantir que a operação de exclusão foi registrada:

selecione * de sample_data_logs;

Saída:

Como podemos ver, a tabela possui uma entrada dos dados anteriores antes da exclusão, bem como o nome do usuário que realizou a atividade de exclusão e a hora da exclusão.

Nas seções a seguir, demonstraremos como desabilitar o gatilho anterior. Antes de fazer isso, verifique se o gatilho de destino está funcionando e se você tem permissões suficientes para ativá-lo ou desativá-lo.

Desativar um gatilho usando PL/SQL

O primeiro e mais direto método de desabilitar um gatilho é usar uma instrução SQL. Felizmente, o Oracle nos fornece a instrução ALTER TRIGGER cuja sintaxe é fornecida da seguinte forma:

ALTER TRIGGER nome_do_gatilho DISABLE;

Por exemplo, para desativar o gatilho log_user que criamos anteriormente, podemos executar o seguinte:

alterar gatilho log_user desabilitar;

Depois de executado, o gatilho não manterá mais uma cópia dos dados antigos e do usuário que realizou a exclusão, conforme mostrado a seguir:

excluir de sample_data onde id = 2;

Confira os registros:

selecione * de sample_data_logs;

Saída:

Como podemos ver, ainda temos apenas um registro.

Desativar um gatilho usando o SQL Developer

Podemos usar o utilitário SQL Developer para desabilitar um gatilho na interface gráfica. Comece fazendo login no SQL Developer.

Navegue até a seção 'Gatilhos':

Expanda o diretório de gatilhos e localize o gatilho que deseja desabilitar. Clique com o botão direito do mouse no nome do gatilho e selecione 'Desativar'.

Confirme a operação “Desativar” e clique em “Aplicar”.

Uma vez desativado, o Oracle apaga o gatilho, indicando que está inativo.

Conclusão

Este artigo explorou como desabilitar um gatilho Oracle usando instruções PL/SQL e o utilitário SQL Developer.