Tarkibga o'tish

029. Triggerlar

Bu mavzuda BEFORE, AFTER, INSTEAD OF triggerlari bo'yicha 15 ta masala bor. Har bir masala oldida qavs ichida sxema nomi va qiyinlik darajasi ko'rsatilgan. Sxemalar Sxemalar va tayyorlov sahifasida berilgan.

Masalani o'zingiz yechib, natijani Kutilgan natija bilan solishtiring. O'zgartiruvchi masalalarda (INSERT, UPDATE, DELETE, DDL) natija shartda aytilgan tekshiruv so'rovidan olingan. Natija 10 qatordan ko'p bo'lsa, birinchi 10 qator ko'rsatilgan.

1. (dokon, oson) BEFORE INSERT trigger: mijoz.ism ni avtomatik katta harfga o'tkazsin. 'ali valiyev' qo'shing.

Kutilgan natija
ALI VALIYEV

2. (dokon, o'rta) Audit trigger: mahsulot narxi o'zgarsa 'narx_log' (mahsulot_id, eski, yangi) ga yozilsin; 1-mahsulot narxini 1000 ga o'zgartiring.

Kutilgan natija
1 | 1000.00

3. (dokon, o'rta) Validatsiya trigger: qoldiq manfiy bo'lsa 0 ga tenglashtirsin (BEFORE UPDATE); 1-mahsulot qoldig'ini -5 qiling.

Kutilgan natija
0

4. (dokon, o'rta) Buyurtma element qo'shilganda mahsulot qoldig'i kamaytirilsin (AFTER INSERT); 1-mahsulotdan miqdor 2 element qo'shing; qoldiq oldin va keyin farqi.

Kutilgan natija
2

5. (dokon, qiyin) O'chirishni taqiqlash: BEFORE DELETE trigger RAISE EXCEPTION; xavfsiz tekshiruv uchun trigger funksiyasi mavjudligi va triggerlar soni.

Kutilgan natija
1

6. (dokon, qiyin) Statement-level trigger: mahsulotga har INSERT dan keyin 'amal_log' ga bitta qator yozilsin; 3 qatorli INSERT dan keyin log soni (1).

Kutilgan natija
1

7. (maktab, oson) BEFORE INSERT: baho jadvalida sana NULL bo'lsa 2025-01-01 qo'ysin; sana ko'rsatilmagan baho qo'shing. Jadvalda sana NOT NULL, shuning uchun trigger BEFORE ishlaydi.

Kutilgan natija
2025-01-01

8. (maktab, o'rta) Maosh o'zgarishi logi: oqituvchi maoshi kamaysa xato bermasdan eskisida qoldirsin (BEFORE UPDATE); 1-o'qituvchi maoshini 1 ga tushirishga urining; maoshi o'zgarmagani.

Kutilgan natija
3250000.00

9. (maktab, qiyin) Davomat trigger: 'kelmadi' qo'shilganda 'ogohlantirish' jadvaliga yozilsin (WHEN sharti bilan). 'kelmadi' qo'shing.

Kutilgan natija
1

10. (bank, o'rta) Tranzaksiya trigger: yangi tranzaksiya qo'shilganda hisob balansi yangilansin (kirim +, chiqim -); 1-hisobga 100000 kirim qo'shing, balans farqi.

Kutilgan natija
100000.00

11. (bank, qiyin) Manfiy balansni taqiqlovchi BEFORE UPDATE trigger; trigger mavjudligini va hisob uchun triggerlar sonini tekshiring.

Kutilgan natija
1

12. (bank, qiyin) DELETE audit: hisob o'chirilganda 'ochirilgan_hisob' jadvaliga eski qator (to_jsonb(OLD)) yozilsin; tranzaksiyasiz hisob o'chiring (id=99 qo'shib).

Kutilgan natija
99

13. (kutubxona, oson) BEFORE INSERT: kitob nomini bosh harf bilan boshlasin (INITCAP); 'yangi kitob' qo'shing.

Kutilgan natija
Yangi Kitob

14. (kutubxona, o'rta) Ijara qaytarilganda nusxa +1: AFTER UPDATE OF qaytarilgan trigger; 5-ijaraga (qaytarilmagan) sana qo'ying; kitob nusxasi farqi.

Kutilgan natija
1

15. (kutubxona, qiyin) INSTEAD OF trigger: ijarada view ga INSERT yozilganda ijara jadvaliga qo'shilsin.

Kutilgan natija
1