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 (Deretter må vi definere en trigger som utføres etter en sletthendelse. Trigger -definisjonen er gitt som følger:
Opprett eller erstatt trigger LOG_USERFor å 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.