Laboratoriya ishi Mavzu: sql triggerlar yaratish. Ishdan maqsad


Download 211.75 Kb.
Pdf ko'rish
bet1/3
Sana17.02.2023
Hajmi211.75 Kb.
#1207735
  1   2   3
Bog'liq
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:
  1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling