Come disabilitare un trigger in Oracle

Come Disabilitare Un Trigger In Oracle



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

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







La maggior parte dei database relazionali supporta l'utilizzo di trigger per eseguire attività automatizzate come la prevenzione di transazioni non valide, la registrazione di eventi, il recupero e la registrazione di statistiche di accesso alle tabelle e altro ancora.



Una volta creato, un trigger viene sempre eseguito ogni volta che si verifica l'evento associato. Tuttavia, potresti voler impedire temporaneamente o permanentemente l'esecuzione di un trigger. È qui che entra in gioco la funzione di disabilitazione del trigger.



Questo post discuterà dei passaggi rapidi e semplici per disabilitare un trigger all'interno di un database Oracle. Se non conosci i trigger Oracle e vorresti sapere come crearne uno, controlla il seguente link:





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

Creazione di un trigger di test

Prima di discutere i metodi per disabilitare un trigger, impostiamo un trigger di esempio a scopo dimostrativo.



NOTA : questa sezione non spiega come definire o utilizzare i trigger del database.

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

Per prima cosa dobbiamo creare una tabella in cui memorizziamo i log per ogni attività di cancellazione.

Lo schema della tabella è il seguente:

crea la tabella sample_data_logs(
numero di identificazione,
nome_varchar2(50),
indirizzo_ip varchar2(20),
indirizzo_btc varchar2(50),
credit_card varchar2(50),
identificatore varchar2(40),
delete_date data,
cancellato_da varchar2(20)
);

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

crea o sostituisci il trigger log_user
dopo l'eliminazione
su sample_data
per ogni riga
dichiarare
nome_utente_azione varchar2(20);
inizio
selezionare l'utente in action_username da dual;
inserire in sample_data_logs
valori (:OLD.id,
:OLD.nome,
:OLD.indirizzo_ip,
:OLD.indirizzo_btc,
:OLD.credit_card,
:OLD.identificatore,
data di sistema,
nome_utente_azione);
fine;

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

cancella da sample_data dove id = 1;

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

selezionare * da sample_data_logs;

Produzione:

Come possiamo vedere, la tabella ha una voce dei dati precedenti prima dell'eliminazione, nonché il nome utente che ha eseguito l'attività di eliminazione e l'ora dell'eliminazione.

Nelle sezioni seguenti, dimostreremo come disabilitare il trigger precedente. Prima di farlo, assicurati che il trigger di destinazione sia funzionante e di disporre di autorizzazioni sufficienti per abilitarlo o disabilitarlo.

Disabilita un trigger utilizzando PL/SQL

Il primo e più semplice metodo per disabilitare un trigger consiste nell'utilizzare un'istruzione SQL. Fortunatamente, Oracle ci fornisce l'istruzione ALTER TRIGGER la cui sintassi è fornita come segue:

ALTER TRIGGER nome_trigger DISABLE;

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 conserverà più una copia dei vecchi dati e dell'utente che ha eseguito l'eliminazione, come mostrato di seguito:

cancella da sample_data dove id = 2;

Controlla i log:

selezionare * da sample_data_logs;

Produzione:

Come possiamo vedere, abbiamo ancora un solo record.

Disabilita un trigger utilizzando SQL Developer

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

Vai alla sezione 'Trigger':

Espandi la directory dei trigger e individua il trigger che desideri disabilitare. Fare clic con il tasto destro sul nome del trigger e selezionare 'Disabilita'.

Confermare l'operazione 'Disabilita' e fare clic su 'Applica'.

Una volta disabilitato, Oracle disattiva il trigger, indicando che è inattivo.

Conclusione

Questo articolo ha esplorato come disabilitare un trigger Oracle utilizzando le istruzioni PL/SQL e l'utilità SQL Developer.