Создание триггера на удаление данных из таблицы.
Создадим тестовую таблицу, на события в которой будеи реагировать.
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 TABLE contacts_audit
( contact_id INT(11) NOT NULL AUTO_INCREMENT,
deleted_date DATE,
deleted_by VARCHAR(30),
CONSTRAINT contacts_pk PRIMARY KEY (contact_id)
);
Создадим триггер на удаление из таблицы
DELIMITER //
CREATE TRIGGER contacts_after_delete
AFTER DELETE
ON contacts FOR EACH ROW
BEGIN
DECLARE vUser varchar(50);
-- Find username of person performing the DELETE into table
SELECT USER() INTO vUser;
-- Insert record into audit table
INSERT INTO contacts_audit
( contact_id,
deleted_date,
deleted_by)
VALUES
( OLD.contact_id,
SYSDATE(),
vUser );
END; //
DELIMITER ;
Пробуем создать и удалить запись из таблицы
Удаление триггера
Для удаления триггера используется, как обычно оператор DROP, пример
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name
где
schema_name — название БД,
trigger_name — название триггера
Список созданных триггеров
Показать триггер можно с помощью команды
SHOW TRIGGERS [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]
Это полная часть команды, в основном пользуются командами:
Изменение триггера
А вот команды по изменению триггера я не нашел и был удивлен, почитал форумы, так и есть — её просто нет ((
Просмотр триггеров
SHOW TRIGGERS [FROM db_name] [LIKE 'pattern']
или
SHOW TRIGGERS
Вот что мы увидем, когда выполним команду
mysql> SHOW TRIGGERS\G; *************************** 1. row *************************** Trigger: test_user_pass Event: INSERT Table: user Statement: BEGIN SET NEW.name = LEFT(NEW.name,1); SET NEW.otch = LEFT(NEW.otch,1); SET NEW.pass = md5(NEW.pass); END Timing: BEFORE Created: NULL sql_mode: STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Definer: root@localhost character_set_client: utf8 collation_connection: utf8_general_ci Database Collation: utf8_unicode_ci 1 row in set (0.01 sec)