Создание триггера на удаление данных из таблицы.
Создадим тестовую таблицу, на события в которой будеи реагировать.
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)