Az adatbázis-triggerek vagy röviden triggerek olyan tárolt eljárásokra utalnak, amelyek egy adott adatbázis-objektum eseménytevékenységére adott válaszként futnak le.
Ez eltér a szabványos tárolt eljárásoktól, amelyek kifejezett meghívást igényelnek a felhasználótól. Mivel a triggerek automatizáltak, a megadott esemény bekövetkezésekor aktiválódnak vagy aktiválódnak, függetlenül a csatlakoztatott felhasználó vagy kiszolgáló állapotától.
A legtöbb relációs adatbázis támogatja a triggerek használatát az olyan automatizált feladatok végrehajtására, mint az érvénytelen tranzakciók megelőzése, az eseménynaplózás, a tábla-hozzáférési statisztikák lekérése és rögzítése stb.
A trigger létrehozása után mindig lefut, amikor a kapcsolódó esemény bekövetkezik. Előfordulhat azonban, hogy ideiglenesen vagy véglegesen meg szeretné akadályozni egy trigger végrehajtását. Itt lép életbe a trigger-letiltás funkció.
Ez a bejegyzés az Oracle adatbázison belüli trigger letiltásának gyors és egyszerű lépéseiről szól. Ha még nem ismeri az Oracle triggereket, és szeretné tudni, hogyan hozhat létre egyet, ellenőrizze a következő hivatkozást:
https://linuxhint.com/oracle-create-trigger
Teszttrigger létrehozása
Mielőtt megvitatnánk a trigger letiltásának módszereit, állítsunk be egy minta triggert demonstrációs célokra.
JEGYZET : Ez a szakasz nem foglalkozik az adatbázis-triggerek meghatározásával vagy használatával.
Olyan triggert szeretnénk létrehozni, amely naplózza a felhasználói tevékenységet a törlési művelet után. Tegyük fel például, hogy van egy sample_data táblánk az alábbi információkkal:
Először létre kell hoznunk egy táblát, amelyben minden törlési tevékenység naplóit tároljuk.
A táblázat séma a következő:
tábla létrehozása sample_data_logs(személyi igazolvány száma,
keresztnév varchar2(50),
ip_address varchar2(20),
btc_address varchar2(50),
credit_card varchar2(50),
azonosító varchar2(40),
delete_date dátum,
varchar2(20) törölte
);
Ezután meg kell határoznunk egy triggert, amely egy törlési esemény után kerül végrehajtásra. A trigger definíciója a következő:
hozza létre vagy cserélje ki a log_user triggerttörlés után
a sample_data oldalon
minden sorhoz
kijelent
művelet_felhasználónév varchar2(20);
kezdődik
válasszuk ki a felhasználót az action_username-be a dualból;
illessze be a minta_adatnaplókba
értékek (:OLD.id,
:RÉGI.utónév,
:OLD.ip_address,
:OLD.btc_address,
:RÉGI.hitelkártya,
:OLD.identifier,
sysdate,
action_username);
vége;
A trigger teszteléséhez hajtsunk végre egy törlési műveletet a sample_data táblából az ábrán látható módon:
törlés a minta_adatból, ahol id = 1;Végül ellenőrizhetjük a naplótáblázatot, hogy megbizonyosodjunk arról, hogy a törlési művelet rögzítésre került:
válassza ki a *-ot a sample_data_logs közül;Kimenet:
Mint látjuk, a táblázatban szerepel a törlés előtti korábbi adatok bejegyzése, valamint a törlési tevékenységet végző felhasználónév és a törlés időpontja.
A következő szakaszokban bemutatjuk, hogyan lehet letiltani az előző triggert. Mielőtt ezt megtenné, győződjön meg arról, hogy a cél trigger működőképes, és rendelkezik-e elegendő jogosultsággal az engedélyezéséhez vagy letiltásához.
Tiltsa le a triggert PL/SQL használatával
A trigger letiltásának első és legegyszerűbb módja az SQL utasítás használata. Szerencsére az Oracle ALTER TRIGGER utasítást biztosít számunkra, amelynek szintaxisa a következő:
ALTER TRIGGER trigger_neve DISABLE;Például a korábban létrehozott log_user trigger letiltásához a következőket futtathatjuk:
alter trigger log_user disable;A végrehajtást követően az eseményindító többé nem fogja megőrizni a régi adatok és a törlést végrehajtó felhasználó másolatát az alábbiak szerint:
törlés a minta_adatból, ahol id = 2;Ellenőrizze a naplókat:
válassza ki a *-ot a sample_data_logs közül;Kimenet:
Mint látjuk, még mindig csak egy rekordunk van.
Tiltsa le a triggert az SQL Developer segítségével
Az SQL Developer segédprogrammal letilthatjuk a grafikus felületen lévő triggereket. Kezdje azzal, hogy bejelentkezik az SQL Developerbe.
Lépjen a „Triggerek” szakaszhoz:
Bontsa ki a triggerek könyvtárát, és keresse meg a letiltani kívánt triggert. Kattintson a jobb gombbal a trigger nevére, és válassza a „Letiltás” lehetőséget.
Erősítse meg a „Letiltás” műveletet, és kattintson az „Alkalmaz” gombra.
A letiltást követően az Oracle kiszürkíti a triggert, jelezve, hogy az inaktív.
Következtetés
Ez a cikk azt vizsgálta, hogyan lehet letiltani egy Oracle triggert PL/SQL utasítások és SQL Developer segédprogram segítségével.