Cómo deshabilitar un disparador en Oracle

Cómo deshabilitar un disparador en Oracle

Los desencadenantes de la base de datos, o los desencadenantes, se refieren a los procedimientos almacenados que se ejecutan como una respuesta a una actividad de evento dentro de un objeto de base de datos determinado.

Esto difiere de los procedimientos almacenados estándar, que requieren una invocación explícita del usuario. Dado que los desencadenantes se automatizan, se activan o se disparan cuando ocurre el evento especificado, independientemente del estado de usuario o servidor conectado.

La mayoría de las bases de datos relacionales admiten los desencadenantes para realizar tareas automatizadas, como prevenir transacciones no válidas, registro de eventos, recuperación y grabación de estadísticas de acceso a la tabla y más.

Una vez que se crea un disparador, siempre se ejecuta cada vez que ocurre el evento asociado. Sin embargo, es posible que desee evitar que se ejecute un disparador temporal o permanentemente. Aquí es donde entra en juego la función de desactivación del gatillo.

Esta publicación discutirá sobre los pasos rápidos y fáciles para deshabilitar un desencadenante dentro de una base de datos Oracle. Si es nuevo en Oracle Triggers y desea saber cómo crear uno, consulte el siguiente enlace:

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

Creando un disparador de prueba

Antes de discutir los métodos para deshabilitar un desencadenante, configuremos un disparador de muestra para fines de demostración.

NOTA: Esta sección no cubre cómo definir o usar los desencadenantes de la base de datos.

Queremos crear un disparador que registre la actividad del usuario después de una operación de eliminación. Por ejemplo, supongamos que tenemos una tabla sample_data con la información como se muestra:

Primero debemos crear una tabla donde almacenamos los registros para cada actividad de eliminación.

El esquema de la tabla es el siguiente:

Crear tabla sample_data_logs (
número de identificación,
First_Name varchar2 (50),
ip_address varchar2 (20),
btc_address varchar2 (50),
Credit_Card Varchar2 (50),
Identificador VARCHAR2 (40),
Fecha de delete_date,
Deleted_by Varchar2 (20)
);

A continuación, necesitamos definir un disparador que se ejecute después de un evento de eliminación. La definición de activación se proporciona de la siguiente manera:

crear o reemplazar el activador log_user
Después de eliminar
en sample_data
por cada fila
declarar
Action_Username varchar2 (20);
comenzar
Seleccione el usuario en Action_Username de Dual;
insertar en sample_data_logs
valores (: antiguos.identificación,
:VIEJO.nombre de pila,
:VIEJO.dirección IP,
:VIEJO.btc_address,
:VIEJO.tarjeta de crédito,
:VIEJO.identificador,
sistema,
Action_Username);
fin;

Para probar el desencadenante, realicemos una operación de eliminación desde la tabla sample_data como se muestra:

Eliminar de sample_data donde id = 1;

Finalmente, podemos verificar la tabla de registros para garantizar que se haya registrado la operación de eliminación:

seleccionar * de sample_data_logs;

Producción:

Como podemos ver, la tabla tiene una entrada de los datos anteriores antes de la eliminación, así como el nombre de usuario que realizó la actividad de eliminación y el tiempo de eliminación.

En las siguientes secciones, demostraremos cómo deshabilitar el disparador anterior. Antes de hacerlo, asegúrese de que su activador objetivo sea funcional y tenga suficientes permisos para habilitarlo o deshabilitarlo.

Desactivar un desencadenante usando PL/SQL

El primer y más directo método para deshabilitar un disparador es usar una instrucción SQL. Afortunadamente, Oracle nos proporciona una declaración de activación de alter cuya sintaxis se proporciona de la siguiente manera:

Alter disparador disparador_name deshabilitar;

Por ejemplo, para deshabilitar el disparador log_user que creamos anteriormente, podemos ejecutar lo siguiente:

alter disparador log_user deshabilitar;

Una vez ejecutado, el desencadenante ya no mantendrá una copia de los datos antiguos y el usuario que realizó la eliminación como se muestra en lo siguiente:

Eliminar de sample_data donde id = 2;

Verifique los registros:

seleccionar * de sample_data_logs;

Producción:

Como podemos ver, todavía tenemos solo un registro.

Deshabilitar un desencadenante usando SQL Developer

Podemos usar la utilidad de desarrollador SQL para deshabilitar un disparador en la interfaz gráfica. Comience por iniciar sesión en el desarrollador SQL.

Navegue a la sección "desencadenantes":

Expanda el directorio de desencadenantes y localice el desencadenante que desea deshabilitar. Haga clic derecho en el nombre del activador y seleccione "Desactivar".

Confirme la operación "Desactivar" y haga clic en "Aplicar".

Una vez deshabilitado, Oracle se repleta el gatillo, lo que indica que está inactivo.

Conclusión

Este artículo exploró cómo deshabilitar un disparador de Oracle utilizando declaraciones PL/SQL y utilidad de desarrollador SQL.