Sådan deaktiveres en trigger i Oracle

Sadan Deaktiveres En Trigger I Oracle



Databasetriggere, eller kort sagt triggere, refererer til lagrede procedurer, der udføres som et svar på en hændelsesaktivitet i et givet databaseobjekt.

Dette adskiller sig fra standard lagrede procedurer, som kræver eksplicit påkaldelse fra brugeren. Da udløsere er automatiserede, udløses eller udløses de, når den angivne hændelse indtræffer, uanset den tilsluttede bruger eller servertilstand.







De fleste relationelle databaser understøtter brugen af ​​triggere til at udføre automatiserede opgaver såsom at forhindre ugyldige transaktioner, hændelseslogning, hentning og registrering af tabeladgangsstatistikker og mere.



Når en trigger er oprettet, kører den altid, når den tilknyttede hændelse indtræffer. Du kan dog midlertidigt eller permanent forhindre en trigger i at udføre. Det er her, trigger-deaktiveringsfunktionen kommer i spil.



Dette indlæg vil diskutere de hurtige og nemme trin til at deaktivere en trigger i en Oracle-database. Hvis du er ny til Oracle triggers og gerne vil vide, hvordan du opretter en, så tjek følgende link:





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

Oprettelse af en testtrigger

Før vi diskuterer metoderne til at deaktivere en trigger, lad os konfigurere en prøveudløser til demonstrationsformål.



BEMÆRK : Dette afsnit dækker ikke, hvordan man definerer eller bruger databaseudløsere.

Vi ønsker at oprette en trigger, der logger brugeraktiviteten efter en slettehandling. Antag for eksempel, at vi har en sample_data-tabel med oplysningerne som vist:

Vi skal først oprette en tabel, hvor vi gemmer logfilerne for hver sletningsaktivitet.

Tabelskemaet er som følger:

opret tabel sample_data_logs(
ID-nummer,
fornavn varchar2(50),
ip_adresse varchar2(20),
btc_address varchar2(50),
kreditkort varchar2(50),
identifikator varchar2(40),
slet_dato dato,
slettet_af varchar2(20)
);

Dernæst skal vi definere en trigger, der udføres efter en slettehændelse. Triggerdefinitionen er angivet som følger:

oprette eller erstat trigger log_user
efter sletning
på sample_data
for hver række
erklære
handling_brugernavn varchar2(20);
begynde
vælg bruger til handling_brugernavn fra dual;
indsæt i sample_data_logs
værdier (:OLD.id,
:OLD.fornavn,
:OLD.ip_adresse,
:OLD.btc_address,
:OLD.kreditkort,
:OLD.identifier,
systemdate,
handling_brugernavn);
ende;

For at teste triggeren, lad os udføre en sletteoperation fra sample_data-tabellen som vist:

slet fra sample_data hvor id = 1;

Endelig kan vi kontrollere logtabellen for at sikre, at slettehandlingen er blevet registreret:

vælg * fra sample_data_logs;

Produktion:

Som vi kan se, har tabellen en indtastning af de tidligere data før sletning, samt brugernavnet, der udførte sletningsaktiviteten, og tidspunktet for sletningen.

I de følgende afsnit vil vi demonstrere, hvordan du deaktiverer den forrige trigger. Før du gør det, skal du sørge for, at din måludløser er funktionel, og at du har tilstrækkelige tilladelser til at aktivere eller deaktivere den.

Deaktiver en trigger ved hjælp af PL/SQL

Den første og mest ligetil metode til at deaktivere en trigger er at bruge en SQL-sætning. Heldigvis giver Oracle os ALTER TRIGGER-sætning, hvis syntaks er angivet som følger:

ALTER TRIGGER trigger_name DEAKTIVER;

For at deaktivere log_user-triggeren, som vi oprettede tidligere, kan vi for eksempel køre følgende:

ændre trigger log_user deaktiver;

Når den er udført, vil triggeren ikke længere beholde en kopi af de gamle data og den bruger, der udførte sletningen som vist i følgende:

slet fra sample_data hvor id = 2;

Tjek logfilerne:

vælg * fra sample_data_logs;

Produktion:

Som vi kan se, har vi stadig kun én rekord.

Deaktiver en trigger ved hjælp af SQL Developer

Vi kan bruge SQL Developer-værktøjet til at deaktivere en trigger i den grafiske grænseflade. Start med at logge ind på SQL-udvikleren.

Naviger til sektionen 'Triggers':

Udvid triggerbiblioteket og find den trigger, du ønsker at deaktivere. Højreklik på triggernavnet og vælg 'Deaktiver'.

Bekræft 'Deaktiver'-handlingen og klik på 'Anvend'.

Når den er deaktiveret, nedtoner Oracle triggeren, hvilket indikerer, at den er inaktiv.

Konklusion

Denne artikel undersøgte, hvordan man deaktiverer en Oracle-trigger ved hjælp af PL/SQL-sætninger og SQL Developer-værktøjet.