Три́гер (англ. trigger) — це збережена процедура особливого типу, яку користувач не викликає явно, а використання якої обумовлено настанням визначеної події (дії) у реляційній базі даних:
- додаванням INSERT,
- вилученням рядка в заданій таблиці DELETE,
- або зміною даних у певному стовпці заданої таблиці UPDATE.
Тригери застосовуються для забезпечення цілісності даних і реалізації складної бізнес-логіки. Тригер запускається автоматично при спробі зміни даних у таблиці, з якою він пов'язаний. Всі здійснені ним модифікації даних розглядаються як виконані в транзакції, в якій виконано дію, що викликало спрацьовування тригера. Відповідно, у разі виявлення помилки або порушення цілісності даних може відбутися відкат цієї транзакції.
Момент запуску тригера визначається за допомогою ключових слів BEFORE (тригер запускається до виконання пов'язаного з ним події; наприклад, до додавання запису) або AFTER (після події). У випадку, якщо тригер викликається до події, він може внести зміни у модифікований подією запис (звичайно, за умови, що подія — не вилучення запису). Деякі СУБД накладають обмеження на оператори, які можуть бути використані в тригері (наприклад, може бути заборонено вносити зміни в таблицю, на якій «висить» тригер тощо).
Крім того, тригери можуть бути прив'язані не до таблиці, а до розрізу (VIEW). В цьому випадку за їхньої допомоги реалізується механізм «оновлюваного виду». В цьому випадку ключові слова BEFORE і AFTER впливають лише на послідовність виклику тригерів, бо власне подія (вилучення, вставка або оновлення) не відбувається.
В деяких серверах тригери можуть викликатися не для кожної модифікації запису, а один раз на зміну таблиці. Такі тригери називаються табличними.
Приклад (Oracle):
/ * Тригер на рівні таблиці * / CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger AFTER UPDATE ON district BEGIN INSERT INTO info VALUES ('table "district" has changed'); END;
А у цьому випадку для відмінності табличних тригерів від записових вводяться додаткові ключові слова при описі рядкових тригерів. В Oracle це словосполучення FOR EACH ROW. Приклад:
/ * Тригер на рівні рядка * / CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger AFTER UPDATE ON district FOR EACH ROW BEGIN INSERT INTO info VALUES ('one string in table "district" has changed'); END;
Ця стаття не містить . (січень 2016) |
Це незавершена стаття про бази даних. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Tri ger angl trigger ce zberezhena procedura osoblivogo tipu yaku koristuvach ne viklikaye yavno a vikoristannya yakoyi obumovleno nastannyam viznachenoyi podiyi diyi u relyacijnij bazi danih dodavannyam INSERT viluchennyam ryadka v zadanij tablici DELETE abo zminoyu danih u pevnomu stovpci zadanoyi tablici UPDATE Trigeri zastosovuyutsya dlya zabezpechennya cilisnosti danih i realizaciyi skladnoyi biznes logiki Triger zapuskayetsya avtomatichno pri sprobi zmini danih u tablici z yakoyu vin pov yazanij Vsi zdijsneni nim modifikaciyi danih rozglyadayutsya yak vikonani v tranzakciyi v yakij vikonano diyu sho viklikalo spracovuvannya trigera Vidpovidno u razi viyavlennya pomilki abo porushennya cilisnosti danih mozhe vidbutisya vidkat ciyeyi tranzakciyi Moment zapusku trigera viznachayetsya za dopomogoyu klyuchovih sliv BEFORE triger zapuskayetsya do vikonannya pov yazanogo z nim podiyi napriklad do dodavannya zapisu abo AFTER pislya podiyi U vipadku yaksho triger viklikayetsya do podiyi vin mozhe vnesti zmini u modifikovanij podiyeyu zapis zvichajno za umovi sho podiya ne viluchennya zapisu Deyaki SUBD nakladayut obmezhennya na operatori yaki mozhut buti vikoristani v trigeri napriklad mozhe buti zaboroneno vnositi zmini v tablicyu na yakij visit triger tosho Krim togo trigeri mozhut buti priv yazani ne do tablici a do rozrizu VIEW V comu vipadku za yihnoyi dopomogi realizuyetsya mehanizm onovlyuvanogo vidu V comu vipadku klyuchovi slova BEFORE i AFTER vplivayut lishe na poslidovnist vikliku trigeriv bo vlasne podiya viluchennya vstavka abo onovlennya ne vidbuvayetsya V deyakih serverah trigeri mozhut viklikatisya ne dlya kozhnoyi modifikaciyi zapisu a odin raz na zminu tablici Taki trigeri nazivayutsya tablichnimi Priklad Oracle Triger na rivni tablici CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger AFTER UPDATE ON district BEGIN INSERT INTO info VALUES table district has changed END A u comu vipadku dlya vidminnosti tablichnih trigeriv vid zapisovih vvodyatsya dodatkovi klyuchovi slova pri opisi ryadkovih trigeriv V Oracle ce slovospoluchennya FOR EACH ROW Priklad Triger na rivni ryadka CREATE OR REPLACE TRIGGER DistrictUpdatedTrigger AFTER UPDATE ON district FOR EACH ROW BEGIN INSERT INTO info VALUES one string in table district has changed END Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2016 Ce nezavershena stattya pro bazi danih Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi