• FOR EAСH ROW ] [When
  • Hozirgi kunda inson faoliyatida ma’lumotlar bazasi (MB) kerakli




    Download 1,78 Mb.
    Pdf ko'rish
    bet59/62
    Sana03.02.2024
    Hajmi1,78 Mb.
    #150970
    1   ...   54   55   56   57   58   59   60   61   62
    Bog'liq
    Методичка Маълумотлар ва билимлар банки 2

     
    Triggerni aniqlash 
    Oracle triggerni aniqlash operatori quyidagi sintaksisga ega: 
    CREATE [OR REPLACETRIGGER [sxema_nomi] trigger_nomi 
    {BEFORE |AFTER} [OR {INSERT|DELETE|UPDATE [OF 
    maydon_nomi {,maydon_nomi …]]}}
    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,78 Mb.
    1   ...   54   55   56   57   58   59   60   61   62




    Download 1,78 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Hozirgi kunda inson faoliyatida ma’lumotlar bazasi (MB) kerakli

    Download 1,78 Mb.
    Pdf ko'rish