Laboratoriya ishi Mavzu: sql triggerlar yaratish. Ishdan maqsad
Download 211.75 Kb. Pdf ko'rish
|
Laboratoriya ishi Mavzu sql triggerlar yaratish. Ishdan maqsad
24-25-26.Laboratoriya ishi Mavzu: SQL triggerlar yaratish. Ishdan maqsad: SQL da triggerlarr yaratish bo`yicha ko`nikmaga ega bo`lish. Masalani qo`yilishi: Berilgan predmet soha ma`lumotlar bazasidagi barcha ob`yektlarni ustida triggerlar yaratish asosida amallarini bajarish. Uslubiy ko`rsatmalar: Triggerlar - bu to'g'ridan-to'g'ri chaqirilmaydigan, ammo ma'lum bir voqea sodir bo'lganda bajariladigan (qatorni qo'shish, o'chirish, yangilash) saqlanadigan protsedura. MySQL-da triggerlarni qo'llab-quvvatlash 5.0.2 versiyasidan boshlangan. Trigger yaratish sintaksisi: Delimiter // CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW BEGIN trigger_stmt; END// Bu yerda: trigger_name — trigerni nomi trigger_time — trigerni ishlaash vaqti BEFORE — Bajarishdan oldin. AFTER — bajarishdan keyin. trigger_event — Hodisa: insert — Hodisa insert, data load, replace operatorlar bilan amalga oshadi. update — Hodisa update operatori bilan amalga oshadi. delete — Hodisa delete, replace operatorlar bilan amalga oshadi. Операторы tbl_name — jadval nomi. trigger_stmt – trigger aktivlashganda bajariladigan ifoda Quyidagi hodisalar uchun triggerlar yaratish mumkin: BEFORE INSERT va AFTER INSERT… BEFORE UPDATE va AFTER UPDATE BEFORE DELETE va AFTER DELETE… Qo’llanilishi mysql> CREATE TABLE Hisob (H_id INT, Middori DECIMAL(10,2)); Query OK, 0 rows affected (2.29 sec) mysql> CREATE TRIGGER summa BEFORE INSERT ON hisob -> FOR EACH ROW SET @sum = @sum + NEW.Middori; Query OK, 0 rows affected (0.36 sec) O'zgaruvchidan oldingi @ belgisi global o'zgaruvchini anglatadi. Uning mysql serveri triggerdan chiqqandan keyin eslab qoladi va uni keyinchalik, masalan, bu kabi ham chaqirish mumkin. New degani biz eski qiymatni emas, balki yangi qiymatni olishimizni anglatadi (OLD eskisi uchun ishlatiladi). FOR EACH ROW- bu siklga o'xshash narsa, ya'ni trigger biriktirilgan jadvalning har bir qatori uchun keyingi nuqta-vergulga o'tiladi. mysql> set @sum=0; Query OK, 0 rows affected (0.08 sec) mysql> INSERT INTO hisob VALUES(137,14.98),(141,1937.50),(97,-100.00); Query OK, 3 rows affected (0.29 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT @sum AS 'Umumiy summa'; +-----------------------+ | Umumiy summa | +-----------------------+ | 1852.48 | +-----------------------+ Download 211.75 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling