Кіріспе
Деректер қорының триггері – деректер қорындағы белгілі бір кестеде немесе көріністегі нақты оқиғаларға жауап ретінде автоматты түрде орындалатын процедуралық код. Триггерлер деректер базасындағы ақпараттың дұрыстығын сақтау үшін негізінен қолданылады. Мысалы, егер жаңа жазба (жаңа қызметкерді көрсететін) қызметкерлер кестесіне қосылса, салықтар, демалыстар және жалақы кестелерінде де жаңа жазбалар жасалуы керек. Триггерлер тарихи деректерді тіркеу үшін де пайдаланылуы мүмкін, мысалы, қызметкерлердің бұрынғы жалақысын қадағалау үшін.
A database trigger is procedural code that is automatically executed in response to certain events on a particular table or view in a database. The trigger is mostly used for maintaining the integrity of the information on the database. For example, when a new record (representing a new worker) is added to the employees table, new records should also be created in the tables of the taxes, vacations and salaries. Triggers can also be used to log historical data, for example to keep track of employees' previous salaries.
ДББЖ-дағы триггерлер
Төменде танымал DBMS жүйелерінің триггерлерді қалай қолдайтынына қатысты бірнеше сипаттама берілген.
Оракул
Деректер өзгертілген кезде іске қосылатын (және PL/SQL кодын орындайтын) триггерлерден өзге, Oracle 10g схема деңгейіндегі объектілердің (яғни кестелердің) өзгертілуімен және пайдаланушының кіру немесе шығу оқиғаларымен байланысты триггерлерді де қолдайды.
Жүйелік деңгейдегі іске қосулар
Oracle 8i-ден бастап деректер базасының оқиғалары – кірулер, шығулар, іске қосылулар – Oracle триггерлерін орындай алады.
Microsoft SQL Server-тің атауы
Microsoft SQL Server-дегі DDL триггерлері үшін қолжетімді барлық оқиғалардың тізімі Microsoft Docs сайтында берілген. Триггерлерде шартты әрекеттерді орындау (немесе өзгертуден кейін деректерді тексеру) уақытша «Inserted» және «Deleted» кестелеріне қол жеткізу арқылы жасалады.
MySQL/MariaDB
MySQL/MariaDB ДБС-дегі триггерлерге шектеулі қолдау 2005 жылы жарық көрген MySQL-дің 5.0 нұсқасында енгізілді. 8.0 нұсқасынан бастап олар DDL (деректерді анықтау тілі) және DML (деректерді манипуляциялау тілі) триггерлерін пайдалануға мүмкіндік береді. Сондай-ақ, олар DDL триггерінің кез келген түрін (AFTER немесе BEFORE) триггерлерді анықтау үшін қолдануға рұқсат береді. Триггерлер CREATE TRIGGER операторы арқылы жасалады және DROP TRIGGER операторы арқылы жойылады. Оқиға болған кезде орындалатын оператор FOR EACH ROW операторынан кейін анықталады, одан кейін кілт сөз (SET немесе BEGIN) келеді, ол одан кейін өрнек пе, әлде оператор пе екенін көрсетеді.
IBM DB2 LUW
IBM DB2 for distributed systems, DB2 for LUW (LUW – Linux, Unix, Windows жүйелерін білдіреді) үш түрлі триггерді қолдайды: Оқиғадан бұрынғы триггер, Оқиғадан кейінгі триггер және Оқиғаның орнына триггер. Операция деңгейі және қатар деңгейі триггерлерінің екеуі де қолдау көрсетіледі. Егер бір кестеде бір операция үшін бірнеше триггер болса, олардың орындалу реті триггер құрылған күнімен анықталады. IBM DB2-нің 9.7 нұсқасынан бастап автономды транзакциялар қолдау көрсетіледі. Оқиғадан бұрынғы триггер деректерді тексеру және операцияға рұқсат беруге болады ма, жоқ па, деген шешім қабылдау үшін қолданылады. Егер оқиғадан бұрынғы триггерден қателік туындаса, операция тоқтатылады және ешқандай дерек өзгертілмейді. DB2-де оқиғадан бұрынғы триггерлер тек оқу режимінде жұмыс істейді – оқиғадан бұрынғы триггерлерде деректерді өзгертуге болмайды. Оқиғадан кейінгі триггерлер қажетті өзгерістер жасалғаннан кейін қосымша өңдеу үшін арналған. Оқиғадан кейінгі триггерлер деректерді кестелерге жаза алады және басқа деректер базаларынан айырмашылығы, триггер жұмыс істейтін кестеге де, кез келген кестеге де жазуға болады. Оқиғаның орнына триггерлер көріністерді жазу мүмкіндігін қамтамасыз етеді. Триггерлер әдетте SQL PL тілінде бағдарламаланады.