triggers pl sql tutorial with example programs
Сазнајте све о покретачима у ПЛ СКЛ-у, њиховим врстама, употреби и предностима:
У ПЛ СКЛ трансакције туториал оф ПЛ / СКЛ серија , сазнали смо о наредбама ЦОММИТ, РОЛЛБАЦК и САВЕПОИНТС.
У овом чланку ћемо истражити покретаче у ПЛ СКЛ-у и њихове предности, врсте и употребу. Разговараћемо о томе како да креирамо, покренемо, омогућимо и онемогућимо ПЛ / СКЛ окидаче уз помоћ примера програма.
Почнимо са дискусијом !!
Шта ћете научити:
Окидачи у ПЛ / СКЛ
Спремљени програм који се подразумевано покреће или неки догађаји називају се окидачем.
Окидач се извршава због следећих околности наведених у наставку:
- Изјавом ДДЛ (језик дефиниције података) попут ДРОП, АЛТЕР или ЦРЕАТЕ.
- ДМЛ (Дата Манипулатион Лангуаге) наредбом попут УПДАТЕ, ИНСЕРТ или ДЕЛЕТЕ.
- Акцијом базе података као што су СХУТДОВН, СТАРТУП, ЛОГОФФ и ЛОГОН.
Окидач се може поставити на шему, приказ или базу података уз који је приложен догађај.
Предности окидача
Они су наведени у наставку:
- Способност примене референтног интегритета.
- Способност праћења.
- Могућност евидентирања и чувања података о приступу табелама.
- Могућност заустављања неважећих трансакција.
- Способност примене сигурносних карактеристика.
- Способност да се подразумевано произведу изведене вредности колона.
Употребе окидача
Они су наведени у наставку:
- Спречава неправилне трансакције.
- Акумулира информације о употреби табеле.
- Надгледајте критичне информације.
Врсте окидача у ПЛ / СКЛ-у
Окидачи се могу категоризирати на основу параметара. Врсте окидача су наведене испод:
# 1) Категоризација на нивоу окидача.
- РОВ Левел окидач: Извршава се за сваки запис који је ажуриран ДМЛ изразом.
- СТАТЕМЕНТ Окидач нивоа: Изводи се само једном помоћу изјаве догађаја.
# 2) Категоризација времена активирања.
- ПРЕ окидача: Извршава се пре одређеног догађаја који се догодио.
- ПОСЛЕ окидача: Извршава се након одређеног догађаја који се догодио.
- УМЕСТО окидача: То је посебна врста окидача и извршава се за сваки запис који је ажуриран ДМЛ изразом.
# 3) Категоризација догађаја окидача.
- ДМЛ окидач: Извршава се ако се изведе ДМЛ догађај попут УПДАТЕ, ИНСЕРТ или ДЕЛЕТЕ.
- ДДЛ окидач: Извршава се ако се изведе ДДЛ догађај попут ДРОП, АЛТЕР или ЦРЕАТЕ.
- Окидач ДАТАБАСЕ: Извршава се ако се догодио догађај базе података као што су СХУТДОВН, СТАРТУП, ЛОГОФФ и ЛОГОН.
Направите окидаче
Синтакса за креирање окидача:
CREATE (OR REPLACE ) TRIGGER trigger_n BEFORE DELETE (OF column_n) ON table_n (REFERENCING OLD AS o NEW AS n) (FOR EACH ROW) WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
Ево,
- СТВОРИ (ИЛИ ЗАМЕНИ) ТРИГГЕР триггер_н - Ово је за креирање, замену или ажурирање окидача чији је назив окидач_н.
- ПОСЛЕ - Ово служи за одређивање времена када ће се окидач активирати. УМЕСТО ОФ је за стварање окидача који има поглед.
- ИЗБРИШИ - Ово је за извршавање ДМЛ радњи.
- (ОФ колона_н) - Ово је за помињање назива колоне које ће бити измењено.
- (ОН табле_н) - Ово је за помињање имена табеле које је причвршћено на окидач.
- (РЕФЕРЕНТУЈУЋИ СТАРО КАО НОВО) - Ово је за упућивање на старе и нове вредности помоћу ДМЛ израза попут УПДАТЕ, ИНСЕРТ или ДЕЛЕТЕ.
- (ЗА СВАКИ РЕД) - Ово одређује окидач на нивоу реда, тј. Окидач ће се активирати за сваки ред који је модификован, иначе ће се окидач активирати само једном када се изврши СКЛ израз, који је познат као окидач на нивоу табеле.
- КАДА (стање) - Ово даје услов за редове за које би се извршио окидач. Ово је применљиво само за окидаче на нивоу реда.
Размотримо поново табелу која је именована УЧЕНИК .
Створимо сада окидач на нивоу реда за табелу СТУДЕНТ који би се извршио помоћу ДМЛ израза попут УПДАТЕ, ИНСЕРТ или ДЕЛЕТЕ на тој табели. Окидач ће израчунати и приказати старосну разлику између тренутних и претходних вредности.
Имплементација кода за креирање окидача:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
Излаз горњег кода:
Горњи код има неке важне карактеристике. Они су наведени у наставку:
- За окидач на нивоу табеле нису доступне СТАРА и НОВА адресе. Те референце можемо користити за окидаче на нивоу записа.
- Ако желимо да применимо још један упит у истом окидачу, тада морамо да користимо кључну реч АФТЕР као окидач који може поново изменити табелу тек након што су претходне измене правилно примењене.
- Горе наведени окидач извршава се пре било које радње ДЕЛЕТЕ, УПДАТЕ или ИНСЕРТ на столу. Међутим, такође можемо дизајнирати окидач који се активира и у једној операцији ( на пример, ПОСЛЕ ИНСЕРТ-а који ће извршити окидач кад год се запис убаци уз помоћ ИНСЕРТ операције на столу).
Покретање окидача у ПЛ СКЛ-у
Да бисмо активирали горњи окидач, потребно је да извршимо било коју ДМЛ операцију попут ДЕЛЕТЕ, ИНСЕРТ или УПДАТЕ на столу. Уметнимо поново неке вредности у студентску табелу уз помоћ доњег упита:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Једном када је операција ИНСЕРТ довршена у студентској табели, окидач аге_цхангес се извршава.
Излаз кода упита:
Пошто је створен нови запис, а претходно доба није доступно, претходно доба и Старосна разлика израчунавање долази као нула у горе наведеном излазу.
Сад, пусти нас измените запис помоћу УПДАТЕ израза уз помоћ доњег упита:
UPDATE student SET age = age + 1 WHERE code = 7;
Једном када је операција УПДАТЕ завршена у студентској табели, окидач аге_цхангес се извршава.
Резултат горњег упита:
НОВА И СТАРА клаузула
Нова клаузула користи се за чување нове вредности за колоне табеле за извршавање окидача. Користи се у покретачима нивоа записа. Стара клаузула користи се за чување старе вредности за колоне табеле за извршавање окидача. Такође се користи у покретачима нивоа записа.
Стога се нова и стара клаузула користе за задржавање и упућивање на нове и старе вредности унутар тела окидача.
Сложени окидач
Сложени окидач се користи за дефинисање операција за све временске тачке унутар тела окидача. Даје одредбу о спајању свих радњи у различито време у оквиру једног тела окидача.
Разне тачке мерења су наведене у наставку:
- НАКОН ИЗЈАВЕ
- ПРЕ нивоа реда
- НАКОН НИЗА
- ПРЕ нивоа изјаве
Онемогући и омогући окидач
Окидач можемо омогућити и онемогућити уз помоћ ДДЛ израза АЛТЕР.
Синтакса:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Овде је триггер_н име окидача који желимо да омогућимо или онемогућимо.
Сада ћемо онемогућити окидач уз помоћ доњег упита:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Излаз кода упита:
Омогућимо сада исти покретач уз помоћ доњег упита:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Излаз кода упита:
Често постављана питања и одговори
П # 1) Колико врста окидача постоји у ПЛ СКЛ-у?
Одговор: Постоје две врсте окидача у ПЛ / СКЛ. Они су окидач на нивоу реда и окидач на нивоу изјаве.
П # 2) Која врста окидача користи старе и нове квалификације?
Питања и одговори за .нет програмер интервјуе
Одговор: Стари и нови квалификатор могу се користити само са окидачима на нивоу реда. Нису компатибилни са покретачима на нивоу изјаве.
П # 3) Која је разлика између окидача новог и окидача старог?
Одговор: Нови окидач даје листу нових верзија објеката записа. Стари окидач даје листу старих верзија објеката записа.
П # 4) Шта је окидач на нивоу реда у ПЛ СКЛ-у?
Одговор: Окидач на нивоу реда покреће се за ред само једном због догађаја. На пример, ако се брисање сматра догађајем окидача за табелу, израз брисања утиче на два реда, тада се окидач активира два пута.
П # 5) Шта је окидач? Објасните на примеру.
Одговор: Окидач је ускладиштена процедура која се подразумевано активира ако се инцидент догоди у бази података. На пример, ако је ред уметнут у табелу или мењамо неке вредности у табели.
П # 6) Који су накнадни окидачи?
Одговор: Окидачи афтер активирају се након извршења ДМЛ израза, али прије урезивања у базу података. Такође је способан да повуче своје деловање.
Закључак
У овом упутству смо разговарали о неким основним концептима окидача у ПЛ СКЛ-у који су неопходни за њихово коришћење током програмирања. Обрадили смо следеће теме наведене у наставку:
- Окидачи.
- Врсте окидача.
- Разне операције на окидачима.
<< PREV Tutorial |. | СЛЕДЕЋА Лекција >>