Мәліметтер қоры және ақпараттық жүйелер sql тілінің стандарты және жүзеге асуы


SQL тілінің стандартында триггерді анықтау



бет9/10
Дата15.06.2023
өлшемі51,07 Kb.
#101489
1   2   3   4   5   6   7   8   9   10
SQL тілінің стандартында триггерді анықтау

Триггерлер сақталатын процедуралардың бір түрі болып табылады. Олардың орындалуы кесте үшін деректерді өзгерту тілінің (DML) кейбір операторын орындау барысында өтеді. Триггерлер деректердің тұтастығын тексеру үшін, сонымен қатар транзакцияларды кері шегіндіру үшін пайдаланылады. Триггер – бұл орындалуы реляциялық дерекқор ішінде анықталған оқиғалардың келуімен шарттастырылған, компиляцияланған SQL-процедура. Триггерлерді пайдалану дерекқор пайдаланушылары үшін өте ыңғайлы. Бірақ, оларды пайдалану енгізу/шығару операцияларына қосымша ресурстардың шығындарымен жиі байланысты. Егер сондай нәтижелерге (ресурстардың едәуір аз өндірістік емес шығындарымен) сақталатын процедуралар немесе қолданбалы бағдарламалар көмегімен жетуге болатын болса, онда триггерлерді қолдану орынсыз. Триггерлер – дерекқорда деректердің тұтастығын қолдау үшін пайдаланылатын SQL сервердің ерекше құралы. Тұтастықты шектеу, ережелер мен үнсіз мәндер көмегімен функционалдықтың қажетті деңгейіне әрқашан жетуге болмайды. Деректердің нақтылығына және растылығына кепілдік беретін деректерді тексерудің күрделі алгоритмдерін жүзеге асыру жиі талап етіледі. Бұдан басқа, кейде байланысқан деректерді қажетті бейнеде өзгерту үшін кестелердің мәндерінің өзгеруін қадағалау қажет. Триггерлерді ережелерге, стандартты мәндерге, т.б. сәйкес барлық операцияларды орындағаннан кейін іске кірісетін сүзгі түрінде қарастыруға болады. Триггер ол байналысқан кестелерде деректерді өзгерту әрекеті барысында автоматты түрде сервермен жіберілетін сақталатын процедуралардың арнайы типі. Әрбір триггер нақты кестеге байланыстырылады. Онымен жасалатын барлық деректер түрлендірулері бір транзакция ретінде қарастырылады. Қате табу немесе деректердің тұтастығын бұзу жағдайында бұл транзакцияны кері шегіндіру өтеді. Осылай өзгертулерді енгізуге тыйым салынады. Сондай-ақ триггермен жасалынған барлық өзгертулер жойылады. Триггерді тек дерекқордың иемденушісі ғана құрады. Бұл шектеу кестелердің құрылымын, онымен басқа объектілердің байланысу тәсілдерін, т.б. кездейсоқ өзгертуден құтылуға мүмкіндік береді. Триггер өте пайдалы және сол мезгілде қауіпті құрал. Оның жұмысының қате логикасы барысында бүкіл дерекқорды оңай жойып жіберуге болады, сондықтан триггерлерді өте мұқият қадағалау қажет. Әдеттегі ішкі бағдарламаға қарағанда триггер триггерлік оқиғалар туындау жағдайында жанама орындалады, оның үстіне оның аргументтері жоқ. Оны әрекетке келтіруді кейде триггерді жіберу деп атайды. Триггерлердің көмегімен келесі мақсаттарға жетуге болады: 130 енгізілген деректердің нақтылығын тексеру және қиын, егер мүмкін болса, кестелер үшін орнатылған тұтастық шектеулерінің көмегімен деректер тұтастығының күрделі шектеулерін орындауды қолдау; белгілі түрде жүзеге асырылған кестелерді жаңарту барысында кейбір әрекеттерді орындау қажеттіліктері туралы еске салатын ескертулер беру; енгізілген өзгертулер мен оларды орындаған тұлғалар туралы мәліметтерді тіркеу арқылы аудиторлық ақпараттарды жинау; репликацияны қолдау. CREATE TRIGGER командасының негізгі пішіні төменде көрсетілген: ::= CREATE TRIGGER триггердің_аты BEFORE | AFTER ON [REFERENCING ] [FOR EACH { ROW | STATEMENT}] [WHEN(триггердің_шарты)] Триггерлік оқиғалар кестеге жолдарды енгізуден, жоюдан және жаңартудан тұрады. Соңғы жағдайда триггерлік оқиғалар үшін кесте бағандарының нақты аттарын көрсетуге болады. Триггерді жіберу уақыты BEFORE (триггер онымен байланысқан оқиғалардың орындалуына дейін жіберіледі) немесе AFTER (олардың орындалуынан кейін) кілттік сөздерінің көмегімен анықталады. Триггермен орындалатын әрекеттер берілген оқиғамен қамтылған әрбір жол үшін (FOR EACH ROW) немесе әрбір оқиға үшін (FOR EACH STATEMENT) тек бір рет қана беріледі. белгіленуі ескі немесе жаңа жол (OLD / NEW) немесе ескі немесе жаңа кестелер (OLD TABLE / NEW TABLE) сияқты компоненттерге жатады. Ескі мәндер енгізу оқиғалары үшін, ал жаңа мәндер – жою оқиғалары үшін қолданылмайтындығы анық. Дұрыс пайдалану шарты орындалса триггерлер өте қуатты тетік бола алады. Олардың негізгі артықшылығы стандартты функциялар дерекқор ішінде сақталады және оны әрбір жаңарту барысында келісімді іске қосылады. Бұл қосымшаны айтарлықтай жеңілдетуі мүмкін. Оған қарамастан, триггерге тән кемшіліктерді атап өткен жөн: күрделілік: дерекқорға кейбір функцияларды ауыстыру барысында оны жобалау, жүзеге асыру мен әкімшілеу есептері күрделенеді; жасырын функционалдық: функция бөлігін дерекқорға ауыстыру және оларды бір немесе бірнеше триггерлер түрінде сақтау кейде пайдаланушыдан кейбір функцианалдық мүмкіндіктерін жасыруға алып келеді. Әйткенмен бұл анықталған деңгейде оның жұмысын жеңілдетеді, бірақ, өкінішке орай бұл жағдайда пайдаланушы дерекқорда өтетін барлық үдерістерді бақылайтын 131 күйде емес болғандықтан жоспарланбаған, потенциалды қалаусыз және зиянды жанама әсерлердің себебі болуы мүмкін; өнімділікке әсер ету: әр команданы орындау алдында дерекқордың күйін өзгерту бойынша ДҚБЖ осы команда үшін триггерді жіберу қажеттілігін анықтау мақсатында триггерлік шартты тексеруі тиіс. Осындай есептеулерді орындау ДҚБЖ-нің жалпы өнімділігіне әсер етеді, ал қиын жүктеме сәтінде оны азайту көзге айқын түсуі мүмкін. Триггерлер санының ұлғаюмен мұндай операциялармен байланысқан қосымша шығындар да артады.



  1. Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет