Cum să dezactivați un declanșator în Oracle

Cum Sa Dezactivati Un Declansator In Oracle



Declanșatoarele bazei de date, sau declanșatoarele pe scurt, se referă la procedurile stocate care sunt executate ca răspuns la o activitate de eveniment într-un obiect de bază de date dat.

Acest lucru diferă de procedurile stocate standard, care necesită invocarea explicită din partea utilizatorului. Deoarece declanșatoarele sunt automate, acestea sunt declanșate sau declanșate atunci când are loc evenimentul specificat, indiferent de starea utilizatorului sau serverului conectat.







Majoritatea bazelor de date relaționale acceptă utilizarea declanșatorilor pentru a efectua sarcini automate, cum ar fi prevenirea tranzacțiilor nevalide, înregistrarea evenimentelor, preluarea și înregistrarea statisticilor de acces la tabel și multe altele.



Odată ce un declanșator este creat, acesta rulează întotdeauna ori de câte ori are loc evenimentul asociat. Cu toate acestea, poate doriți să împiedicați temporar sau permanent executarea unui declanșator. Aici intră în joc funcția de dezactivare a declanșatorului.



Această postare va discuta despre pașii rapidi și simpli pentru dezactivarea unui declanșator într-o bază de date Oracle. Dacă sunteți nou în declanșatoarele Oracle și doriți să știți cum să creați unul, verificați următorul link:





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

Crearea unui declanșator de testare

Înainte de a discuta despre metodele de dezactivare a unui declanșator, să setăm un exemplu de declanșare în scopuri demonstrative.



NOTĂ : Această secțiune nu acoperă modul de definire sau utilizare a declanșatorilor bazei de date.

Dorim să creăm un declanșator care să înregistreze activitatea utilizatorului după o operație de ștergere. De exemplu, să presupunem că avem un tabel sample_data cu informațiile prezentate:

Mai întâi trebuie să creăm un tabel în care stocăm jurnalele pentru fiecare activitate de ștergere.

Schema tabelului este următoarea:

creați tabelul sample_data_logs(
numar de identificare,
prenume varchar2(50),
adresa_ip varchar2(20),
btc_address varchar2(50),
card_credit varchar2(50),
identificatorul varchar2(40),
data_tergere_data,
deleted_by varchar2(20)
);

În continuare, trebuie să definim un declanșator care este executat după un eveniment de ștergere. Definiția declanșatorului este oferită după cum urmează:

creați sau înlocuiți trigger log_user
după ștergere
pe sample_data
pentru fiecare rând
declara
action_username varchar2(20);
ÎNCEPE
selectați utilizatorul în action_username din dual;
inserați în eșantion_data_logs
valori (:OLD.id,
:OLD.prenume,
:OLD.ip_address,
:OLD.btc_address,
:OLD.card_credit,
:OLD.identificator,
sistem,
action_username);
Sfârşit;

Pentru a testa declanșatorul, permiteți-ne să efectuăm o operație de ștergere din tabelul sample_data după cum se arată:

șterge din sample_data unde id = 1;

În cele din urmă, putem verifica tabelul de jurnal pentru a ne asigura că operația de ștergere a fost înregistrată:

selectați * din sample_data_logs;

Ieșire:

După cum putem vedea, tabelul are o intrare a datelor anterioare înainte de ștergere, precum și numele de utilizator care a efectuat activitatea de ștergere și ora ștergerii.

În secțiunile următoare, vom demonstra cum să dezactivați declanșatorul anterior. Înainte de a face acest lucru, asigurați-vă că declanșatorul țintă este funcțional și că aveți suficiente permisiuni pentru a-l activa sau dezactiva.

Dezactivați un declanșator folosind PL/SQL

Prima și cea mai simplă metodă de dezactivare a unui declanșator este utilizarea unei instrucțiuni SQL. Din fericire, Oracle ne oferă instrucțiunea ALTER TRIGGER a cărei sintaxă este furnizată după cum urmează:

ALTER TRIGGER trigger_name DISABLE;

De exemplu, pentru a dezactiva declanșatorul log_user pe care l-am creat mai devreme, putem rula următoarele:

alter trigger log_user disable;

Odată executat, declanșatorul nu va mai păstra o copie a datelor vechi și  a utilizatorului care a efectuat ștergerea, așa cum se arată în următoarele:

șterge din sample_data unde id = 2;

Verificați jurnalele:

selectați * din sample_data_logs;

Ieșire:

După cum putem vedea, mai avem un singur record.

Dezactivați un declanșator folosind SQL Developer

Putem folosi utilitarul SQL Developer pentru a dezactiva un declanșator în interfața grafică. Începeți prin a vă conecta la SQL Developer.

Navigați la secțiunea „Declanșatoare”:

Extindeți directorul declanșatoare și localizați declanșatorul pe care doriți să-l dezactivați. Faceți clic dreapta pe numele declanșatorului și selectați „Dezactivați”.

Confirmați operațiunea „Dezactivare” și faceți clic pe „Aplicați”.

Odată dezactivat, Oracle stinge declanșatorul, indicând că este inactiv.

Concluzie

Acest articol a explorat cum să dezactivați un declanșator Oracle folosind instrucțiuni PL/SQL și utilitarul SQL Developer.