Ishdan maqsad: Ma’lumotlar bazasining infologik va mantiqiy modelini, er diagrammalarini yaratishni o‘rganish. Topshiriqlar


ON [sxema_nomi.] {jadval_nomi|tasavvur_nomi} [FOR EAСH ROW


Download 1.49 Mb.
bet54/57
Sana27.01.2023
Hajmi1.49 Mb.
#1132339
1   ...   49   50   51   52   53   54   55   56   57
Bog'liq
2 5375303174699622638

ON [sxema_nomi.] {jadval_nomi|tasavvur_nomi}
[FOR EAСH ROW] [When shart]
Bu yerda:
OR REPLACE parametr eski trigger matnini shartsiz almashtirish kerakligini anglatadi. Agar OR REPLACE ko‘rsatilmasa va trigger aniqlansa, eski trigger matnini almashtirish bajarilmaydi va xatolik haqida xabar chiqariladi.
Before yoki Alter kalit so‘zi trigger kodini bajarishini triggerni ishga tushishini boshlab beruvchi (initsialiatsiya qiluvchi) operatorlardan oldin yoki keyin ishga tushishini bildiradi.
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;

Download 1.49 Mb.

Do'stlaringiz bilan baham:
1   ...   49   50   51   52   53   54   55   56   57




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling