В этом учебном пособии вы узнаете, как создать триггер BEFORE INSERT в MariaDB с синтаксисом и примерами.
Описание
Триггер BEFORE INSERT означает, что MariaDB сработает этот триггер до того, как будет выполнена операция INSERT.
Синтаксис
Синтаксис создания триггера BEFORE INSERT в MariaDB:
CREATE TRIGGER trigger_name BEFORE INSERT
ON table_name FOR EACH ROW
ON table_name FOR EACH ROW
BEGIN
-- variable declarations
-- trigger code
END;
Параметры или аргументы
- trigger_name
- Название создаваемого триггера.
- BEFORE INSERT
- Это означает, что триггер сработает до выполнения операции INSERT.
- table_name
- Имя таблицы, для которой создан триггер.
Ограничения
- Вы не можете создать BEFORE INSERT на VIEW.
- Вы можете обновить NEW значения.
- Вы не можете обновить OLD значения.
Примечание
- Смотрите также, как создавать триггеры AFTER DELETE, AFTER INSERT, AFTER UPDATE, BEFORE DELETE и BEFORE UPDATE.
- Смотрите также, как удалить триггер.
Пример
Рассмотрим пример того, как создать триггер BEFORE INSERT с помощью оператора CREATE TRIGGER в MariaDB.
Если у вас есть таблица, созданная следующим образом:
1 2 3 4 5 6 7 8 9 |
CREATE TABLE contacts ( contact_id INT(11) NOT NULL AUTO_INCREMENT, last_name VARCHAR(30) NOT NULL, first_name VARCHAR(25), birthday DATE, created_date DATE, created_by VARCHAR(30), CONSTRAINT contacts_pk PRIMARY KEY (contact_id) ); |
Затем мы можем использовать оператор CREATE TRIGGER для создания триггера BEFORE INSERT следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
DELIMITER // CREATE TRIGGER contacts_before_insert BEFORE INSERT ON contacts FOR EACH ROW BEGIN DECLARE vUser varchar(50); -- Поск username пользователя, выполняющего INSERT в таблицу SELECT USER() INTO vUser; -- Обновление поля create_date до текущей системной даты SET NEW.created_date = SYSDATE(); -- Оновление поля created_by значением username пользователя выполняющего INSERT SET NEW.created_by = vUser; END; // DELIMITER ; |