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.
|
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling