Повернутися до всіх запитань

Що таке Triggers в базах даних?

Devs Hive

Devs Hive

Зустрічали на інтервʼю: 1 користувач

Triggers у базах даних - це спеціальні процедури, які автоматично виконуються у відповідь на певну подію (INSERT, UPDATE, DELETE) в таблиці або view.

Розберемо приклад

Уявімо, що ми маємо таблицю users і таблицю user_logs. Ми можемо створити trigger, який буде записувати подію під час створення нового користувача. Замість того, щоб реалізовувати цю логіку в сервісі, надійніше використати trigger, який виконуватиметься на рівні бази даних.

-- users
id | name | email
-------------------
1 | Alice | alice@test.com
2 | Bob | bob@test.com


-- user_logs
id | user_id | action | created_at
------------------------------------------
1 | 1 | USER_CREATED | 2025-01-01 10:00:00

Для того щоб реалізувати trigger, ми можемо використати наступний SQL-код:

CREATE TRIGGER after_user_insert
AFTER INSERT ON users
FOR EACH ROW
BEGIN
INSERT INTO user_logs (user_id, action, created_at)
VALUES (NEW.id, 'USER_CREATED', NOW());
END;

Ми створюємо trigger з назвою after_user_insert, який буде автоматично спрацьовувати після додавання нового запису в таблицю users.

AFTER INSERT ON users означає, що він виконується після операції INSERT у таблиці users.

FOR EACH ROW означає, що trigger буде запускатися для кожного нового рядка окремо. Усередині trigger ми записуємо дані в user_logs.

NEW.id - це значення id нового користувача, якого щойно було додано в таблиці users.

BEFORE і AFTER

Як видно з SQL-коду вище, ми використовуємо AFTER, тобто trigger виконується після операції INSERT. Загалом, trigger може виконуватися як після певної операції, так і перед нею. Для того, щоб виконати його перед операцією, потрібно використати ключове слово BEFORE.

Зустрічав на інтервʼю?

Повʼязані питання

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!