O'ZBЕKISTON RESPUBLIKASI AXBOROT
TEXNOLOGIYALARI VA KOMMUNIKATSIYALARINI RIVOJLANTIRISH VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKЕNT
AXBOROT TЕXNOLOGIYALARI UNIVЕRSITЕTI
Fayzullayev Zohidning Ma’lumotlar bazasi amaliy fanidan 5-amaliy ishi
TUIT-2022
SQLda triggеrlar yaratish.
PostgreSQL da CREATE TRIGGER kalit sozi orqali trigger yaratish.
CREATE TRIGGER PostgreSQL da yangi trigger yaratadi.
Quyida CREATE TRIGGER ning asosiy sintaksisi tasvirlangan:
CREATE TRIGGER trigger_name
{BEFORE | AFTER} { event }
ON table_name
[FOR [EACH] { ROW | STATEMENT }] EXECUTE PROCEDURE trigger_function
Ushbu sintaksisda:
Birinchidan, TRIGGER kalit so'zlardan keyin trigger nomini belgilang .
Ikkinchidan, yonish vaqtini belgilang. Bu bo'lishi mumkin BEFORE yoki AFTER voqea sodir bo'ladi. Uchinchidan, triggerni chaqiradigan hodisani belgilang. Hodisa INSERT, DELETE, UPDATE yoki TRUNCATE bo'lishi mumkin .
To'rtinchidan, ON kalit so'zdan keyin trigger bilan bog'langan jadval nomini belgilang .
Beshinchidan, quyidagilar bo'lishi mumkin bo'lgan triggerlar turini belgilang:
band tomonidan belgilangan qator darajasidagi trigger FOR EACH ROW.
band tomonidan belgilangan bayonot darajasidagi trigger FOR EACH
STATEMENT.
Har bir satr uchun satr darajasidagi trigger ishga tushiriladi, har bir tranzaksiya uchun butun darajadagi trigger ishga tushiriladi.
Agar DELETE iborasi 100 qatorni o'chirib tashlasa, satr darajasidagi trigger har bir o'chirilgan qator uchun bir martadan 100 marta ishga tushadi. Boshqa tomondan, qancha satr o'chirilganidan qat'iy nazar, bayonot darajasidagi trigger bir marta ishga tushiriladi.
Faraz qilaylik, jadvalda 100 ta qator va DELETE hodisasi sodir bo'lganda ishga tushadigan ikkita trigger mavjud.
Agar DELETEbayonot 100 qatorni o'chirib tashlasa, satr darajasidagi trigger har bir o'chirilgan qator uchun bir martadan 100 marta yonadi. Boshqa tomondan, qancha satr o'chirilganidan qat'iy nazar, bayonot darajasidagi trigger bir marta ishga tushiriladi.
Nihoyat, EXECUTE PROCEDURE kalit so‘zlaridan keyin ishga tushirish funksiyasining nomini belgilanadi .
PostgreSQL CREATE TRIGGER misoli
Employes jadvalini yaratamiz.
Xodimning ismi o'zgarganda o'zgarishlarni employee_audits nomli alohida jadvalda qayd qilmoqchimiz :
Birinchi log_last_name_changes nomli, yangi funktsiya yaratamiz :
Funktsiya jadvalga eski familiyani kiritadi, employee_audits shu jumladan xodimning identifikatori, familiyasi va familiyasi o'zgargan bo'lsa, o'zgarish vaqti.
OLD Yangilashdan oldingi qatorni , NEW yangilanadigan yangi qatorni ifodalaydi. Yangilanishdan OLD.last_name oldingi familiyani NEW.last_name qaytaradi va yangi familiyani qaytaradi.
Ikkinchidan employees ni , trigger funktsiyasini jadvalga bog'lang . Trigger nomi last_name_changes. Ustunning qiymati yangilanishidan oldin, o'zgarishlarni qayd qilish last_name uchun trigger funktsiyasi avtomatik ravishda chaqiriladi.
Trigger yaratamiz:
Trigger yaratildi.
Uchinchidan, employees jadvalga bir nechta qatorlarni kiritamiz :
Malumot kiritildi.
To'rtinchidan, employees jadvalini chaqirib ko'ramiz:
Aytaylik, bu Vohid Abdullayevning familiyasini o'zgartiradi Vohid Malikov ga.
Beshinchidan, Vohid familiyasini yangisiga yangilaymiz:
Jadvalni chaqiramiz
Natijadan ko'rinib turibdiki, Vohidning familiyasi yangilangan.
Sakkizinchidan, employee_audits jadval mazmunini tekshiramiz:
O'zgartirish employee_audits trigger tomonidan jadvalga kiritilgan.
Do'stlaringiz bilan baham: |