Hur man inaktiverar en utlösare i Oracle

Hur Man Inaktiverar En Utlosare I Oracle



Databasutlösare, eller förkortat utlösare, hänvisar till lagrade procedurer som exekveras som ett svar på en händelseaktivitet inom ett givet databasobjekt.

Detta skiljer sig från vanliga lagrade procedurer, som kräver explicit anrop från användaren. Eftersom utlösare är automatiserade utlöses eller aktiveras de när den angivna händelsen inträffar, oavsett ansluten användare eller serverstatus.







De flesta relationsdatabaser stöder användning av utlösare för att utföra automatiserade uppgifter som att förhindra ogiltiga transaktioner, händelseloggning, hämtning och inspelning av tabellåtkomststatistik och mer.



När en utlösare har skapats körs den alltid när den associerade händelsen inträffar. Du kanske vill tillfälligt eller permanent förhindra att en utlösare körs. Det är här funktionen för avaktivering av trigger kommer in.



Det här inlägget kommer att diskutera om de snabba och enkla stegen för att inaktivera en utlösare i en Oracle-databas. Om du är ny på Oracle-utlösare och vill veta hur du skapar en, kolla följande länk:





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

Skapa en testtrigger

Innan vi diskuterar metoderna för att inaktivera en utlösare, låt oss ställa in en provutlösare för demonstrationsändamål.



NOTERA : Det här avsnittet täcker inte hur man definierar eller använder databasutlösare.

Vi vill skapa en trigger som loggar användaraktiviteten efter en raderingsoperation. Anta till exempel att vi har en sample_data-tabell med informationen som visas:

Vi måste först skapa en tabell där vi lagrar loggarna för varje raderingsaktivitet.

Tabellschemat är som följer:

skapa tabell sample_data_logs(
id nummer,
förnamn varchar2(50),
ip_adress varchar2(20),
btc_address varchar2(50),
kreditkort varchar2(50),
identifierare varchar2(40),
delete_date date,
deleted_by varchar2(20)
);

Därefter måste vi definiera en trigger som exekveras efter en delete-händelse. Triggerdefinitionen tillhandahålls enligt följande:

skapa eller ersätta trigger log_user
efter radering
på sample_data
för varje rad
deklarera
action_username varchar2(20);
Börja
välj användare till action_username från dual;
infoga i sample_data_logs
värden (:OLD.id,
:OLD.first_name,
:OLD.ip_address,
:OLD.btc_address,
:OLD.kreditkort,
:OLD.identifier,
systemdate,
action_username);
slutet;

För att testa utlösaren, låt oss utföra en raderingsoperation från tabellen sample_data som visas:

ta bort från sample_data där id = 1;

Slutligen kan vi kontrollera loggtabellen för att säkerställa att borttagningen har registrerats:

välj * från sample_data_logs;

Produktion:

Som vi kan se har tabellen en inmatning av tidigare data före raderingen, samt användarnamnet som utförde raderingsaktiviteten och tidpunkten för raderingen.

I följande avsnitt kommer vi att demonstrera hur man inaktiverar den tidigare utlösaren. Innan du gör det, se till att din målutlösare fungerar och att du har tillräckliga behörigheter för att aktivera eller inaktivera den.

Inaktivera en utlösare med PL/SQL

Den första och enklaste metoden för att inaktivera en trigger är att använda en SQL-sats. Lyckligtvis förser Oracle oss med ALTER TRIGGER-satsen vars syntax tillhandahålls enligt följande:

ALTER TRIGGER trigger_name DISABLE;

Till exempel, för att inaktivera log_user-utlösaren som vi skapade tidigare, kan vi köra följande:

ändra trigger log_user disable;

När utlösaren har körts kommer den inte längre att behålla en kopia av den gamla datan och användaren som utförde raderingen enligt följande:

ta bort från sample_data där id = 2;

Kontrollera loggarna:

välj * från sample_data_logs;

Produktion:

Som vi kan se har vi fortfarande bara ett rekord.

Inaktivera en utlösare med SQL Developer

Vi kan använda SQL Developer-verktyget för att inaktivera en trigger i det grafiska gränssnittet. Börja med att logga in på SQL-utvecklaren.

Navigera till avsnittet 'Triggers':

Expandera triggerkatalogen och leta reda på triggern som du vill inaktivera. Högerklicka på utlösarens namn och välj 'Inaktivera'.

Bekräfta åtgärden 'Inaktivera' och klicka på 'Apply'.

När Oracle har inaktiverats grånar den utlösaren, vilket indikerar att den är inaktiv.

Slutsats

Den här artikeln undersökte hur du inaktiverar en Oracle-utlösare med PL/SQL-satser och SQL Developer-verktyget.