Trigger dasturlash
Yozuvlarni qo'shish, o'zgartirish va o'chirish buyruqlarini bajarishda server ikkita maxsus jadval yaratadi: kiritilgan va o'chirildi... Ularda tranzaksiya oxirida kiritiladigan yoki o'chiriladigan qatorlar ro'yxati mavjud. Kiritilgan va o'chirilgan jadvallarning tuzilishi tetiği aniqlangan jadvallar tuzilishi bilan bir xil. Har bir tetikchi o'z kiritilgan va o'chirilgan jadvallar to'plamini yaratadi, shuning uchun ularga boshqa hech qanday kiruvchi kira olmaydi. Trigger bajarilishiga sabab bo'lgan operatsiya turiga qarab, kiritilgan va o'chirilgan jadvallar tarkibi boshqacha bo'lishi mumkin:
INSERT - kiritilgan jadval foydalanuvchi jadvalga kiritmoqchi bo'lgan barcha qatorlarni o'z ichiga oladi. o'chirilgan jadvalda qatorlar bo'lmaydi; trigger tugagandan so'ng, kiritilgan jadvaldagi barcha qatorlar asl jadvalga ko'chiriladi;
DELETE buyrug'i - o'chirilgan jadvalda foydalanuvchi o'chirmoqchi bo'lgan barcha qatorlar bo'ladi; tetik har bir qatorni tekshirishi va uni o'chirishga ruxsat berilganligini aniqlashi mumkin; kiritilgan jadvalda qatorlar bo'lmaydi;
UPDATE buyrug'i - bajarilgandan so'ng, o'chirilgan jadvalda eski qator qiymatlari mavjud bo'lib, ular muvaffaqiyat bilan o'chiriladi
Oxirgi yangilanish: 09.11.2017
Triggerlar - bu saqlanadigan protseduraning maxsus turi bo'lib, u jadval yoki ko'rinishda ma'lum bir amal bajarilganda, xususan, ma'lumotlar qo'shilganda, o'zgartirilganda yoki o'chirilganda, ya'ni INSERT, UPDATE, DELETE buyruqlarini bajarishda avtomatik ravishda chaqiriladi.
Rasmiy tetik ta'rifi: Har bir trigger ma'lum bir jadval yoki ko'rinish bilan bog'liq bo'lib, uning nomi ON so'zidan keyin paydo bo'ladi.
Keyin tetik turi o'rnatiladi. Biz ikkita turdan birini ishlatishimiz mumkin:
KEYIN: Amal tugagandan so'ng bajariladi. Faqat jadvallar uchun belgilanadi.
O'RNI: harakat o'rniga bajariladi (ya'ni, amal - qo'shish, o'zgartirish yoki o'chirish - umuman bajarilmaydi). Jadvallar va ko'rinishlar uchun belgilanadi
Trigger turidan keyin tetik aniqlanadigan operatsiyaning ko'rsatmasi keladi: INSERT, UPDATE yoki DELETE.
Tetik uchun AFTER bir vaqtning o'zida UPDATE va INSERT kabi bir nechta amallarga qo'llanilishi mumkin. Bunday holda, operatsiyalar vergul bilan ajratiladi. INSTEAD OF trigger uchun faqat bitta harakatni aniqlash mumkin.
Va keyin AS so'zidan so'ng, aslida tetik korpusini tashkil etuvchi SQL bayonotlar to'plami keladi.
Keling, tetik yarataylik. Aytaylik, bizda quyidagi ta'rifga ega productsdb ma'lumotlar bazasi mavjud:
Ma'lumotlar bazasini yaratish productdb; GOST USDdan foydalaning; JADVAL mahsulotlarini yaratish (Id INTENT IDENT PRIMARY KEY, ProductName NVARCHAR (30) NULL EMAS, NVARCHAR (20) NULL EMAS, ProductCount INT DEFAULT 0, Narx PUL NULL emas);
Sql_expression AS TRIGGER trigger_name ON (table_name | view_name) (SONRA | O'RNI)
Trigger yaratish uchun CREATE TRIGGER iborasi ishlatiladi, keyin esa tetik nomi. Odatda, tetik nomi operatsiyalar turini va operatsiya bajariladigan jadval nomini aks ettiradi.
Ma'lumotni qo'shish va yangilashda ishga tushadigan tetikni aniqlaylik:
Productdb dan foydalaning; QO'ShIMChA QANDAY TEXNIKA TUG'ILGAN MAHSULOTLARNI YARATISH, MAHSULOTLARNI SIFATLAShISH Narxi = Narx + Narx * 0.38 QAYERDA Id = (Tanlangan iddan kiritilgan)
Aytaylik, Mahsulotlar jadvali mahsulot ma'lumotlarini saqlaydi. Lekin mahsulot bahosida ko'pincha qo'shimcha qiymat solig'i, qo'shilgan korruptsiya solig'i va boshqalar kabi turli qo'shimcha to'lovlar mavjud. Ma'lumot qo'shgan kishi soliq bazasining barcha murakkabliklarini bilmasligi mumkin va ular aniq narxni aniqlaydilar. Tetik yordamida biz mahsulot narxini ma'lum miqdorda sozlashimiz mumkin.
Shunday qilib, tijorat mahsulotlari jadvalidagi har qanday INSERT yoki UPDATE operatsiyasini yoqadi. Tetikning 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, siz qo'shganingizda yoki o'zgartirganingizda, ma'lumotlar kiritilgan jadvalga 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'shilganda aniqlanganidan biroz yuqori bo'ladi.
Do'stlaringiz bilan baham: |