Dərsə Mysql öyrən "Mysql development Training"



Yüklə 3,16 Mb.
səhifə29/35
tarix01.01.2022
ölçüsü3,16 Mb.
#103080
növüDərs
1   ...   25   26   27   28   29   30   31   32   ...   35

Triggerlər


SQL-də trigger cədvəllə əlaqədar database obyektinə verilən addır və cədvəldə müəyyən əməliyyatlar baş verərkən avtomatik işə düşür.Triggerlər bir çox məqsədlər üçün istifadə oluna bilər, məsələn cədvələ daxil edilən müəyyən məlumatları göstərmək yaxud

cədvəllərdə olan dəyişikliyi, yeniləmələri izləmək və s.

Verilənlərlər bazası ilə iş üçün Stored Procedures adlı prosedurlar vardır ki onlar müəyyən standart funksiyalardır.Bu funksiyaları biz özümüz işə sala bilərik.Necə ki obyektyönümlü proqramlaşdırma dillərində funksiyalar yaradılır eynilə MySQL-də də elə funksiyalar yaratmaq olur ki onlar Stored Procedures adlanır.Lakin

triggerlərin Stored Procedure -lardan fərqi ondan ibarətdir ki hər hansı bir cədvələ müəyyən bir dinləyici (listener) qurlaşdırılır.Bu dinləyici cədvəldə müəyyən proseslər gedən zaman həmin prosesə qoşulur vəavtomatik olaraq işə düşürlər.Əsasən cədvəllərdə gedən 3 əməliyyat zamanı (insert, update, delete) triggerlərdən istifadə olunur.

Triggerlərin AFTER və BEFORE adlı xüsusi konstruksiyaları vardır.Hansı ki onların köməyi ilə hər hansı cədvəldə müəyyən bir prosesin yerinə yetirilməsindən əvvəl və ya sonra triggerin işə düşməsini təmin etmək olar.

Trigger yaratmaq üçün create trigger, silmək üçün isə drop trigger komandaları istifadə olunur.

Birlikdə bir trigger yaradılması nümunəsinə baxaq.Keçən dərslərimizdə yaratdığımız developer cədvəlində cədvələ gedən insert prosesi üçün trigger yaradaq.

Qeyd edək ki trigger yaratmazdan əvvəl onun, dinləməni yazacağı cədvəli yaratmalıyıq.Bu cədvəl developer cədvəlindən dinləmə yazacağına görə onu uyğun olaraq

log_dev adlandıra bilərik.

create table if not exists log_dev(

id int not null primary key auto_increment, description varchar(50),

dev_id int);

Burada description sütunu developer cədvəlindəki name sütununa yazılacaq məlumatı , dev_id sütunu isə developer cədvəlində id sütununda generasiya olunacaq id-ni əks etdirəcəkdir.

İndi isə triggerimizi yarada bilərik:

create trigger my_trg AFTER insert on developer FOR EACH ROW insert into log_dev(description,dev_id) values(NEW.name,NEW.id);


triggerin qoşulmasını yoxlamaq üçün developer cədvəlimizə məlumat daxil (insert) edək:




insert into developer(name) values('Etibar');



sorğusu ilə cədvələ insert etdikdən sonra

select * from developer;yazaraq 7ci sətrin əlavə olunduğunu

görürük.

Triggerimizin log _devcədvəlinə nə yazdığına baxaq:

select * from log _dev;komandası ilə triggerimizin insert prosesini dinlədiyini görürük:


Yuxarıda yazdığımız trigger komandasının açıqlamasını daha dərindən qavramaq üçün aşağıdakı şəkilə nəzər yetirək:



trigger_body ( yəni 5 hissəsində) hissəsində yazılan NEWaçar sözü ilə developer cədvəlinin sütunlarına müraciət edirik.Yəni burada NEW sözü developer cədvəlindən link saxlayır.Aşağı sol hissədə trigger yaradılmasının sintaksisi əks olunmuşdur.

Yuxarıdakı trigger yaratmasorğusundatrigger time-ı vətrigger event -i dəyişərəkdigərkomandaları da özünüzyoxlayabilərsiniz.

Yaratdığımıztriggerisilməküçünyazacağımızkomanda

drop trigger my_trg;şəklində olacaq.

***




  1. Yüklə 3,16 Mb.

    Dostları ilə paylaş:
1   ...   25   26   27   28   29   30   31   32   ...   35




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin