10-Amaliy mashg’ulot PL/SQL da triggerlar
Triggerlar saqlanadigan dasturlar bo'lib, ular ba'zi hodisalar sodir bo'lganda avtomatik ravishda bajariladi yoki ishga tushiriladi.
Aslida, triggerlar quyidagi hodisalarga javoban bajarish uchun yoziladi.
A database manipulation (DML) statement (DELETE, INSERT, or UPDATE)
A database definition (DDL) statement (CREATE, ALTER, or DROP).
A database operation (SERVERERROR, LOGON, LOGOFF, STARTUP, yoki SHUTDOWN)
Triggerlar hodisa bilan bog'liq bo'lgan jadval, ko'rinish, sxema yoki ma'lumotlar bazasida aniqlanishi mumkin.
Triggerlarning afzalliklari
Triggerlar quyidagi maqsadlarda yozilishi mumkin
Ayrim olingan ustun qiymatlarini avtomatik yaratish
Ma’lumot yaxlitligini ta'minlash
Hodisalarni ro'yxatga olish va jadvalga kirishda ma'lumotlarni saqlash
Auditing
Jadvallarning sinxron nusxalash
Xavfsizlik ruxsatnomalarini o'rnatish
Yaroqsiz operatsiyalarni oldini olish
Triggerlarni yaratish
Trigger yaratish sintaksisi
CREATE [OR REPLACE ] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF }
{INSERT [OR] | UPDATE [OR] | DELETE}
[OF col_name]
ON table_name
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
WHEN (condition)
DECLARE
Declaration-statements
BEGIN
Executable-statements
EXCEPTION
Exception-handling-statements
END;
Bu yerda
CREATE [OR REPLACE] TRIGGER trigger_name- mavjud triggerni almashtirish yoki yangi trigger yaratish.
{BEFORE | AFTER | INSTEAD OF} – bu qism trigger ishga tushganda ishlaydi
{INSERT [OR] | UPDATE [OR] | DELETE}- Bu DML operatsiyasini belgilaydi.
[OF col_name]- Bu yangilanadigan ustun nomini belgilaydi.
[ON table_name]- Bu trigger bilan bog'langan jadval nomini belgilaydi.
[REFERENCING OLD AS o NEW AS n] - Bu turli DML ifodalari uchun yangi va eski qiymatlarga murojaat qilish imkonini beradi, shu jumladan INSERT, UPDATE va DELETE
[FOR EACH ROW]- Bu satr darajasidagi triggerni belgilaydi, ya'ni trigger ta'sir qilinadigan har bir qator uchun bajariladi. Aks holda, SQL operatori bajarilganda trigger faqat bir marta bajariladi, bu jadval darajasidagi trigger deb ataladi.
WHEN (condition)- Bu trigger ishga tushadigan qatorlar uchun shart beradi. Bu ifoda faqat qator darajasidagi triggerlar uchun amal qiladi.
Misol:
Quyidagi trigger customers jadvali uchun satr-darajasidagi trigger hisoblanadi. Ushbu trigger customers jadvalida bajariladigan INSERT yoki UPDATE yoki DELETE operatsiyalari uchun ishga tushadi. Ushbu trigger eski qiymatlar va yangi qiymatlar o'rtasidagi ish haqi farqini ko'rsatadi
Do'stlaringiz bilan baham: |