Slik deaktiverer du en utløser i Oracle

Slik Deaktiverer Du En Utloser I Oracle



Databaseutløsere, eller kort sagt triggere, refererer til lagrede prosedyrer som utføres som et svar på en hendelsesaktivitet i et gitt databaseobjekt.

Dette skiller seg fra standard lagrede prosedyrer, som krever eksplisitt påkalling fra brukeren. Siden utløsere er automatiserte, utløses eller utløses de når den angitte hendelsen inntreffer, uavhengig av tilkoblet bruker eller serverstatus.







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



Når en utløser er opprettet, kjører den alltid når den tilknyttede hendelsen inntreffer. Det kan imidlertid være lurt å midlertidig eller permanent hindre en utløser fra å kjøre. Det er her funksjonen for deaktivering av utløser kommer inn.



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





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

Opprette en testutløser

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



MERK : Denne delen dekker ikke hvordan du definerer eller bruker databaseutløsere.

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

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

Tabellskjemaet er som følger:

opprett tabell sample_data_logs(
ID-nummer,
fornavn varchar2(50),
ip_adresse varchar2(20),
btc_address varchar2(50),
kredittkort varchar2(50),
identifikator varchar2(40),
slette_dato dato,
slettet_av varchar2(20)
);

Deretter må vi definere en trigger som utføres etter en slettehendelse. Utløserdefinisjonen er gitt som følger:

opprette eller erstatt trigger log_user
etter sletting
på sample_data
for hver rad
erklære
handlingsbrukernavn varchar2(20);
begynne
velg bruker til handling_brukernavn fra dual;
sett inn i sample_data_logs
verdier (:OLD.id,
:OLD.first_name,
:OLD.ip_adresse,
:OLD.btc_address,
:OLD.kredittkort,
:OLD.identifier,
systemdate,
handling_brukernavn);
slutt;

For å teste utløseren, la oss utføre en sletteoperasjon fra sample_data-tabellen som vist:

slett fra sample_data hvor id = 1;

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

velg * fra sample_data_logs;

Produksjon:

Som vi kan se, har tabellen en oppføring av tidligere data før sletting, samt brukernavnet som utførte sletteaktiviteten og tidspunktet for slettingen.

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

Deaktiver en utløser ved å bruke PL/SQL

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

ALTER TRIGGER trigger_name DISABLE;

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

endre trigger log_user deaktiver;

Når den er utført, vil utløseren ikke lenger beholde en kopi av de gamle dataene og brukeren som utførte slettingen som vist i følgende:

slett fra sample_data hvor id = 2;

Sjekk loggene:

velg * fra sample_data_logs;

Produksjon:

Som vi kan se har vi fortsatt bare én rekord.

Deaktiver en utløser ved hjelp av SQL-utvikler

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

Naviger til 'Triggers'-delen:

Utvid triggerkatalogen og finn triggeren du ønsker å deaktivere. Høyreklikk på utløsernavnet og velg 'Deaktiver'.

Bekreft 'Deaktiver' operasjonen og klikk 'Bruk'.

Når den er deaktivert, gråner Oracle utløseren, noe som indikerer at den er inaktiv.

Konklusjon

Denne artikkelen utforsket hvordan du deaktiverer en Oracle-utløser ved hjelp av PL/SQL-setninger og SQL Developer-verktøy.