Модульні уроки (4/4)
Практичні тригери та аудит
Тепер, коли ми навчилися створювати розумні кулі (функції тригерів), нам потрібно встановити їх на справжню готову зброю в очікуванні події: ось і справжні тригери! Тригер формально приєднує раніше створену функцію та вказує їй запускати «ДО» або «ПІСЛЯ» певної події CRUD у даній таблиці.
Є багато варіантів; наприклад, FOR EACH ROW запускає його один раз на уражений рядок, тому, якщо груповий запит є ГЛОБАЛЬНИМ ОНОВЛЕННЯМ понад 5 мільйонів рядків, він запустить 5 мільйонів мікровиконань — будьте обережні з цим!
CREATE TRIGGER sync_inventory_trigger
-- Event options
AFTER INSERT OR UPDATE ON order_items
-- Modus operandi (singular or global macro-block FOR EACH STATEMENT)
FOR EACH ROW
-- Run the forged action
EXECUTE FUNCTION update_stock();Тригер невидимий для JavaScript і автономно підтримуватиме повну послідовність запасу виключно на основі оновлень, безпечно надісланих до механізму.
Автоматизація Updated_At
Існує вічно зелена бізнес-проблема, коли ми забуваємо передати { updated_at: new Date() } в наших моделях оновлення JS. Функція тригера set_updated_at в поєднанні з тригером BEFORE UPDATE усуває цю незручність, автоматично оновлюючи кожну зміну запису.
Спробуйте самі
Створіть тригер під назвою "trg_force_uppercase".\nПриєднайте його на етапі "BEFORE INSERT" до таблиці "customers".\nПримусово обчислюйте рядок за рядком "ДЛЯ КОЖНОГО РЯДКА" та викликайте виконання функції "force_uppercase_name()".\nПримітка: також повторно створіть UDF "force_uppercase_name" (оскільки середовище ізольоване) у верхній частині коду, а потім додайте оголошення тригера.
Показати підказку
Синтаксис тексту: спочатку створіть функцію, а потім додайте CREATE TRIGGER trg_force_uppercase ПЕРЕД ВСТАВЛЕННЯМ НА клієнтах ДЛЯ КОЖНОГО РЯДКА ВИКОНАЙТЕ ФУНКЦІЮ force_uppercase_name();
Рішення доступне після 3 спроб
Вбийте датчик! Іноді ми хочемо проштовхнути необроблені вихідні файли або тимчасові нативні зміни, минаючи галасливі аудити.\nВідкинути тригер неймовірно просто (ви не видаляєте органічну функцію, ви видаляєте лише прив’язку датчика).\nВикористовуйте ключове слово «DROP TRIGGER», вказуючи назву та глобальне вкладення.
Показати підказку
Не забудьте вказати, звідки. DROP TRIGGER trg_force_uppercase ON клієнтів;
Рішення доступне після 3 спроб