Triggerlar.Triggerlarni aniqlash.
Triggerlar - jadval yoki ko'rinishda ma'lum amal bajarilganda, xususan, ma'lumotlarni qo'shish, o'zgartirish yoki o'chirishda, ya'ni INSERT, UPDATE, DELETE buyruqlarini bajarishda avtomatik ravishda chaqiriladigan maxsus turdagi saqlanadigan protseduralar.
Triggerning rasmiy ta'rifi:
Trigger yaratish uchun CREATE TRIGGER iborasidan keyin trigger nomidan foydalaning. Qoida tariqasida, trigger nomi operatsiyalar turini va operatsiya bajariladigan jadval nomini aks ettiradi.
Har bir trigger ON so'zidan keyin nomi ko'rsatilgan ma'lum bir jadval yoki ko'rinish bilan bog'langan.
Keyin tetik turi o'rnatiladi. Biz ikkita turdan birini ishlatishimiz mumkin:
KEYIN: Harakat tugallangandan keyin bajariladi. Faqat jadvallar uchun belgilangan.
O‘RNING: harakat o‘rnida bajariladi (ya’ni, aslida harakat – qo‘shish, o‘zgartirish yoki o‘chirish – umuman bajarilmaydi). Jadvallar va ko'rinishlar uchun belgilangan
Trigger turidan so‘ng trigger aniqlanayotgan operatsiya ko‘rsatkichi keladi: INSERT, UPDATE yoki DELETE.
Trigger uchun AFTER bir vaqtning o'zida bir nechta amallarga qo'llanilishi mumkin, masalan, UPDATE va INSERT. Bunday holda, operatsiyalar vergul bilan ajratilgan holda belgilanadi. Trigger O'RNI uchun faqat bitta amalni belgilash mumkin.
Va keyin AS so'zidan keyin aslida trigger tanasini tashkil etuvchi SQL iboralari to'plami keladi.
Keling, trigger yarataylik. Aytaylik, bizda quyidagi ta'rifga ega productsdb ma'lumotlar bazasi mavjud:
Keling, ma'lumotlarni qo'shish va yangilashda ishga tushadigan triggerni aniqlaylik:
Aytaylik, "Mahsulotlar" jadvali mahsulotlar haqidagi ma'lumotlarni saqlaydi. Lekin mahsulot narxi ko'pincha qo'shilgan qiymat solig'i, qo'shilgan korruptsiyaga soliq va hokazo kabi turli qo'shimcha to'lovlarni o'z ichiga oladi. Ma'lumotni qo'shayotgan shaxs soliq bazasi bilan barcha bu nozikliklarni bilmasligi mumkin va u aniq narxni belgilaydi. Trigger yordamida biz mahsulot narxini ma'lum miqdorda sozlashimiz mumkin.
Shunday qilib, trigger Mahsulotlar jadvalidagi har qanday INSERT yoki UPDATE amallarida ishga tushadi. Triggerning o'zi mahsulot narxini o'zgartiradi va qo'shilgan yoki o'zgartirilgan mahsulotni olish uchun biz ushbu mahsulotni Id bo'yicha topamiz. Ammo bunday mahsulotning identifikatori qanday qiymatga ega bo'lishi kerak? Gap shundaki, qo'shish yoki o'zgartirish paytida ma'lumotlar kiritilgan oraliq jadvalda saqlanadi. U avtomatik ravishda yaratiladi. Va undan biz qo'shilgan / o'zgartirilgan mahsulotlar haqida ma'lumot olishimiz mumkin.
Mahsulotlar jadvaliga mahsulotni qo'shgandan so'ng, aslida mahsulot qo'shish paytida aniqlanganidan bir oz yuqoriroq narxga ega bo'ladi:
Trigger o'chirilmoqda
Triggerni olib tashlash uchun DROP TRIGGER buyrug'idan foydalaning:
Triggerni o'chirish
Shunday bo'ladiki, biz trigger harakatini to'xtatmoqchimiz, lekin uni butunlay olib tashlashni xohlamaymiz. Bunday holda, uni DISABLE TRIGGER buyrug'i yordamida vaqtincha o'chirib qo'yish mumkin:
Trigger kerak bo'lganda, uni ENABLE TRIGGER buyrug'i yordamida yoqish mumkin:
Do'stlaringiz bilan baham: |