Современные информационные технологии/ 2. Вычислительная техника и программирование

 

э.ғ.д., профессор Орынбеков А.O., математика магистрі, аға оқытушы Бурлибаева Ш.М., студент Сулайманова А.

 

ТРИГГЕР

 

Триггер – кестеге орналастыратн ереже, сонымен қатар DELETE, UPDATE немесе INSERT іске қосылған кезде қосымша әрекеттер орындалады. Мысалы, журналда өзгерістерді енгізуге болады. Бірақ екі бөлек сұраныс орнына (біреуі- деректерді өзгертуге, екіншісі- журналға жазбаларды енгізуге), «Қашан болмасын жол өзгергенде, жасалынған өзгерістер туралы хабарлау үшін басқа кестеде жаңа жол құру» ережені қамтитін триггерді енгізуге болады. Мұндай әрекеттер негізгі сұраныста кейбір артықшылық жасайды, бірақ жалпы өнімділікті  арттыруға ықпал етеді.

MySQL-ге триггерлер 5.0.2 версиясынан бастап енгізілген. Триггердің синтаксисі басқаша. Процедура мен басқа функциялар үшін MySQL ANSI SQL:2003 стандарт қолданылады.

Триггерлер процедура ретінде DELETE, UPDATE немесе INSERT оқиғалар кезде орындалады. Олар оқиғалар анықталмай немесе анықталған соң орындалу мүмкін. Осылайша INSERT алдында және INSERT – тен кейін триггерді анықтауға болады. Бұл INSERT – ке дейін бір триггер орындалу, ал INSERT – тен кейін басқа триггер орындалу мүмкін. Триггер өте күшті құрал болатынын білдіреді.  

Триггер- шын мәнінде, сақталатын процедура, бірақ нақты кесте мазмұның өзгеру оқиғасына байланысты. Триггердің мақсаты- берілген кестедегі жазбалардың өзгеруін, сонымен қатар жазбалардың енгізуін немесе олардың жойылғаның анықтау. Жоғарыда айтылғандардан мынадай қорытынды жасауға болады: мысалы, триггерлерді кестемен әр түрлі әрекеттер жасауда қолдануға болады.

Триггерді құру

CREATE TRIGGER trigger_name ON table_name trigger_time trigger_event FOR EACH ROW trigger_stmt -

бұл сұраныс жалпы түрде триггер құруға қолданылады.

trigger_time – бұның орнына кілтті сөздердің біреуі көрсетіледі:

BEFORE – кестеге өзгерістер енгізілмей триггер орындалады;

AFTER - кестеге өзгерістер енгізіліп триггер орындалады;

trigger_event - триггер қандай оқиға қандай әрекеттер жасау тиістігін көрсетеді, әрекеттер төмендегідей болу мүмкін:

INSERT - триггер жаңа жазба қосылу оқиғасымен байланысты;

UPDATE – жаңа жазба жаңарту оқиғасымен байланысты;

DELETE - жазба жою оқиғасымен байланысты;

trigger_stmt – триггердің тұлғасы болып табылады. Триггер тұлғасы ішіндегі бірнеше оператор орындалу үшін BEGIN-END блок ішіне қою керек.

Мысалы:

FirstName бір өріс орналасқан table1 кесте бар. Дата және уақыт типті ValueCh, DateChange өрістер орналасқан тағы да бір LogsName кестені құрастырамыз. Бұл кестеге триггер енгізілген өзгерістерді жазады.

Сұраныс құрастырайық:

DELIMITER //

CREATE TRIGGER myTrigger BEFORE INSERT ON `table1`

FOR EACH ROW

BEGIN

INSERT INTO `LogsName` (`ValueCh`, `DateChange`) VALUES (NEW.`FirstName`,  NOW()) ;

END

//

Басында // бөлгіш ретінде анықтайық. Триггер тұлғасында логтар үшін кестеге енгізу сұранысын көрсетеміз. ValueCh өріс үшін жазбалар енгізілінеді, бұл table1 кестенің FirstName өрісінен NEW кілтті сөз арқасында, ол енгізілмей тұрып, жеткен болатын жаңа мән, сонымен қатар DataChange өріске ағымды дата мен уақыт енгізілінеді.

Сонымен, table1 кестеге жазба қалай енгізілетіне қарамастан триггер логтар кестесіне енгізілінетін мән мен енгізу датасы туралы ақпаратты жазады.

Кесте жаңартуға триггер құру мысалы:

DELIMITER //

CREATE TRIGGER myTrigger1 BEFORE UPDATE ON `table1`

FOR EACH ROW

BEGIN

INSERT INTO `LogsName` (`ValueCh`, `DateChange`) VALUES (CONCAT(NEW.`FirstName`,'-', OLD.`FirstName`),

,  NOW()) ;

END

//

Триггер тұлғасында OLD кілтті сөз тағы қолданылады. Логтар кестенің ValueCh өрісіне өзгертілетін өріс үшін жаңа мән мен ескі мән біріккен түрінде ақпарат енгізілінеді.

Жойылған жазбаларды жазу үшін жоюға триггер құрылады. Оның жазылуы ұқсас.

Триггер жоюға келесі сұраныс құрылады:

DROP TRIGGER myTrigger1

 

 

ПАЙДАЛАНҒАН ӘДЕБИЕТТЕР

1.   Конноли Т., Бегг К. Базы данных: проектирование, реализация, сопровождение. Теория и практика. 3-е изд. М.: Вильямс, 2008

2.   Виктор Гольцман. MySQL 5.0. Библиотека программиста. СПб.: Питер.-253б

3.   http://www.mysql.com MySQL Databases