Come disabilitare un trigger in Oracle

Come disabilitare un trigger in Oracle

Trigger di database, o trigger in breve, fare riferimento a procedure memorizzate che vengono eseguite come risposta a un'attività di evento all'interno di un determinato oggetto di database.

Ciò differisce dalle procedure memorizzate standard, che richiedono un'invocazione esplicita da parte dell'utente. Poiché i trigger sono automatizzati, vengono attivati ​​o licenziati quando si verifica l'evento specificato, indipendentemente dall'utente connesso o dallo stato del server connesso.

La maggior parte dei database relazionali supportano i trigger per eseguire attività automatizzate come la prevenzione di transazioni non valide, la registrazione degli eventi, il recupero e la registrazione delle statistiche di accesso alla tabella e altro ancora.

Una volta creato un trigger, funziona sempre ogni volta che si verifica l'evento associato. Tuttavia, potresti voler impedire temporaneamente o permanentemente un trigger. È qui che entra in gioco la funzione Disabilita del grilletto.

Questo post discuterà dei passaggi rapidi e semplici per disabilitare un trigger all'interno di un database Oracle. Se sei nuovo in Oracle Trigger e desideri sapere come crearne uno, controlla il seguente link:

https: // linuxhint.com/Oracle-Create-trigger

Creazione di un trigger di prova

Prima di discutere i metodi di disabilitazione di un trigger, impostiamo un trigger di esempio per scopi dimostrativi.

NOTA: Questa sezione non copre come definire o utilizzare i trigger di database.

Vogliamo creare un trigger che registra l'attività dell'utente dopo un'operazione di eliminazione. Ad esempio, supponiamo di avere una tabella Sample_Data con le informazioni come mostrato:

Dobbiamo prima creare una tabella in cui archiviamo i registri per ogni attività di cancellazione.

Lo schema della tabella è il seguente:

Crea table Sample_data_logs (
Numero ID,
first_name varchar2 (50),
ip_address varchar2 (20),
btc_address varchar2 (50),
Credit_Card Varchar2 (50),
Identificatore varchar2 (40),
DATA DELETE_DATE,
deleted_by varchar2 (20)
);

Successivamente, dobbiamo definire un trigger che viene eseguito dopo un evento di eliminazione. La definizione del trigger è fornita come segue:

creare o sostituire trigger log_user
Dopo la cancellazione
su campione_data
per ogni riga
dichiarare
action_username varchar2 (20);
inizio
Seleziona l'utente in Action_Username da Dual;
Inserisci in sample_data_logs
valori (: vecchio.id,
:VECCHIO.nome di battesimo,
:VECCHIO.indirizzo IP,
:VECCHIO.btc_address,
:VECCHIO.carta di credito,
:VECCHIO.identificatore,
Sysdate,
action_username);
FINE;

Per testare il trigger, eseguiamo un'operazione di eliminazione dalla tabella Sample_Data come mostrato:

Elimina da Sample_data dove id = 1;

Infine, possiamo controllare la tabella dei registri per garantire che l'operazione di eliminazione sia stata registrata:

Seleziona * da sample_data_logs;

Produzione:

Come possiamo vedere, la tabella ha una voce dei dati precedenti prima della cancellazione, così come il nome utente che ha eseguito l'attività di eliminazione e il tempo di eliminazione.

Nelle sezioni seguenti, dimostreremo su come disabilitare il trigger precedente. Prima di farlo, assicurati che il trigger target sia funzionale e che tu abbia autorizzazioni sufficienti per abilitarlo o disabilitarlo.

Disabilita un trigger usando PL/SQL

Il primo e più semplice metodo di disabilitazione di un trigger sta usando un'istruzione SQL. Fortunatamente, Oracle ci fornisce un'istruzione Alter Trigger la cui sintassi è fornita come segue:

Alter trigger trigger_name disabilita;

Ad esempio, per disabilitare il trigger log_user che abbiamo creato in precedenza, possiamo eseguire quanto segue:

alter trigger log_user disabilita;

Una volta eseguito, il trigger non manterrà più una copia dei vecchi dati e l'utente che ha eseguito la cancellazione come mostrato di seguito:

Elimina da Sample_Data dove id = 2;

Controlla i registri:

Seleziona * da sample_data_logs;

Produzione:

Come possiamo vedere, abbiamo ancora un solo record.

Disabilita un trigger usando SQL Developer

Possiamo utilizzare l'utilità SQL Developer per disabilitare un trigger nell'interfaccia grafica. Inizia accedendo allo sviluppatore SQL.

Passare alla sezione "Trigger":

Espandi la directory dei trigger e individua il grilletto che si desidera disabilitare. Fare clic con il tasto destro del tasto destro al trigger e selezionare "Disabilita".

Conferma l'operazione "Disabilita" e fai clic su "Applica".

Una volta disabilitato, Oracle sfila il grilletto, indicando che è inattivo.

Conclusione

Questo articolo ha esplorato come disabilitare un trigger Oracle utilizzando le istruzioni PL/SQL e SQL Developer Utility.