Hvordan deaktivere en trigger i Oracle

Hvordan deaktivere en trigger i Oracle

Database utløser, eller utløser for kort, se lagrede prosedyrer som blir utført som et svar på en hendelsesaktivitet i et gitt databaseobjekt.

Dette skiller seg fra standard lagrede prosedyrer, som krever eksplisitt påkallelse fra brukeren. Siden triggere er automatisert, blir de utløst eller avfyrt når den spesifiserte hendelsen oppstår, uavhengig av den tilkoblede bruker- eller serverstaten.

De fleste relasjonsdatabaser støtter ved bruk av triggere for å utføre automatiserte oppgaver som å forhindre ugyldige transaksjoner, hendelseslogging, hente og registrere tabelltilgangsstatistikk og mer.

Når en trigger er opprettet, kjører den alltid når den tilhørende hendelsen inntreffer. Det kan imidlertid være lurt å midlertidig eller permanent forhindre at en utløser utfører. Det er her Trigger Disable -funksjonen kommer inn i spillet.

Dette innlegget vil diskutere om de raske og enkle trinnene for å deaktivere en utløser i en Oracle -database. Hvis du er ny i Oracle utløser og vil vite hvordan du oppretter en, kan du sjekke følgende lenke:

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

Opprette en testutløser

Før vi diskuterer metodene for å deaktivere en trigger, la oss sette opp en prøveutløser for demonstrasjonsformål.

MERK: Denne delen dekker ikke om hvordan du skal definere eller bruke databasen utløser.

Vi ønsker å lage en trigger som logger brukeraktiviteten etter en slettoperasjon. Anta for eksempel at vi har en prøve_data -tabell med informasjonen som vist:

Vi må først lage et tabell der vi lagrer loggene for hver slettingsaktivitet.

Bordskjemaet er som følger:

Lag tabellprøve_data_logs (
ID-nummer,
First_name varchar2 (50),
IP_ADDRESS VARCHAR2 (20),
BTC_ADDRESS VARCHAR2 (50),
Credit_card varchar2 (50),
Identifikator varchar2 (40),
DELETE_DATE DATO,
slettet_by varchar2 (20)
);

Deretter må vi definere en trigger som utføres etter en sletthendelse. Trigger -definisjonen er gitt som følger:

Opprett eller erstatt trigger LOG_USER
Etter sletting
på prøve_data
for hver rad
erklære
action_usname varchar2 (20);
begynne
Velg bruker til action_usname fra dual;
Sett inn eksempler_data_logs
Verdier (: gammel.id,
:GAMMEL.fornavn,
:GAMMEL.IP adresse,
:GAMMEL.BTC_ADDRESS,
:GAMMEL.kredittkort,
:GAMMEL.identifikator,
sysdate,
action_usname);
slutt;

For å teste avtrekkeren, la oss utføre en slettoperasjon fra Sample_Data -tabellen som vist:

slett fra prøve_data der id = 1;

Til slutt kan vi sjekke loggtabellen for å sikre at slettoperasjonen er registrert:

Velg * fra Sample_Data_logs;

Produksjon:

Som vi kan se, har tabellen en oppføring av de tidligere dataene før sletting, samt brukernavnet som utførte slettingsaktiviteten og slettingstidspunktet.

I de følgende seksjoner vil vi demonstrere hvordan du deaktiverer den forrige utløseren. Før du gjør det, må du sørge for at målutløseren din er funksjonell og at du har tilstrekkelige tillatelser til å aktivere eller deaktivere det.

Deaktiver en trigger ved bruk av PL/SQL

Den første og mest enkle metoden for å deaktivere en trigger er å bruke en SQL -setning. Heldigvis gir Oracle oss en annen triggeruttalelse hvis syntaks er gitt som følger:

Alter trigger trigger_name deaktiverer;

For å deaktivere LOG_USER -utløseren som vi opprettet tidligere, kan vi for eksempel kjøre følgende:

alter trigger log_user deaktiverer;

Når den er utført, vil avtrekkeren ikke lenger oppbevare en kopi av de gamle dataene og brukeren som utførte slettingen som vist på følgende:

slett fra prøve_data der id = 2;

Sjekk logger:

Velg * fra Sample_Data_logs;

Produksjon:

Som vi kan se, har vi fremdeles bare en plate.

Deaktiver en trigger ved hjelp av SQL -utvikler

Vi kan bruke SQL -utviklerverktøyet til å deaktivere en trigger i det grafiske grensesnittet. Start med å logge på SQL -utvikleren.

Naviger til "Triggers" -delen:

Utvid triggerkatalogen og finn utløseren du ønsker å deaktivere. Høyreklikk på utløsernavnet og velg “Deaktiver”.

Bekreft "deaktiver" -operasjonen og klikk "Bruk".

Når de er deaktivert, slår Oracle ut avtrekkeren, og indikerer at den er inaktiv.

Konklusjon

Denne artikkelen utforsket hvordan du deaktiverer en Oracle Trigger ved bruk av PL/SQL -setninger og SQL Developer Utility.