INSERT, DELETE yoki UPDATE kalit so‘zlar triggerni ishga
tushiruvchi konkret operatorlar. Zarur bo‘lmagan OR kalit so‘zi triggerni
ishga tushiradigan qo‘shimcha operatorni ulaydi ON kalit so‘zi trigger bilan
bog‘liq jadval nomini beradi.
Zaruriy bo‘lmagan FOR EACH ROW kalit so‘zi
satrli triggerni
aniqlaydi. Zaruriy bo‘lmagan WHEN kalit so‘zi trigger ishga tushishini
boshlanishi aniqlovchi hodisa sohasini aniqlaydigan qo‘shimcha
mantiqiy
shartni beradi (aniqlaydi).
new – protsedurasi (old qo‘shimchasi) faqat triggerlar uchun ishlatish
mumkin. INSERT yoki UPDATE komandasi
uchun maydonni yangi
qiymatini belgilaydi.
Shuningdek, yozuvlarni yangilash (UPDATE) va o‘chirish (DELETE)
uchun: old prefiks ishlatiladi. Uning manosi UPDATE yoki DELETE
komandalarini bajargunga qadar maydon qiymatini belgilaydi.
Misol. Xodimlar jadvaliga bo‘ladigan o‘zgarishlarni
faqat ish vaqtida
kiritishni ta’minlaydigan, EMP_PERMIT_CHANGES triggerini yarating
CREATE TRIGGER emp_permit_changes
BEFORE
DELETE OR INSERT OR UPDATE
ON employee
DECLARE
dummy
INTEGER;
BEGIN
/* Agar shanba yoki yakshanba bo‘lsa, xatolik qaytarsin. */
IF (TO_CHAR(SYSDATE, 'DY') = 'SAT' OR
TO_CHAR(SYSDATE, 'DY') = 'SUN')
THEN raise_application_error( –20501,
'employee jadvalini faqat ish kunlarida o‘zgartirish mumkin');
END IF;
/* Agar bayram bo‘lsa, u holda xatolik qaytarsin*/
SELECT COUNT(*)
INTO dummy
FROM company_holidays
WHERE day = TRUNC(SYSDATE);
IF dummy > 0
THEN raise_application_error( –20501,
'Bayram kunlari employee jadvalini o‘zgartirish mumkin emas');
END IF;
/* Agar soat 8:00 dan oldin yoki 17:00 keyin kiritilsa, xatolik qaytarsin
*/
IF (TO_CHAR(SYSDATE, 'HH24') < 8 OR
TO_CHAR(SYSDATE, 'HH24') >= 17)
THEN raise_application_error( –20502,
' employee jadvalini sih vaqtidan tashqari bo‘lgn vaqtda o‘zgartish
mumkin emas');
END IF;
END;