MySQL AFTER DELETE触发器
时间:2019-02-04 12:52:34 来源:igfitidea点击:
AFTER DELETE触发器就是MySQL将在执行DELETE操作后触发该触发器。
语法
在MySQL中创建AFTER DELETE触发器的语法为:
CREATE TRIGGER trigger_name AFTER DELETE ON table_name FOR EACH ROW BEGIN -- variable declarations -- trigger code END;
参数 | 说明 |
---|---|
trigger_name | 触发器的名称。 |
AFTER DELETE | 它表示执行DELETE操作后才触发触发器。 |
table_name | 在其上创建触发器的表的名称。 |
注意
您不能在视图上创建 BEFORE DELETE 触发器。
有两个变量NEW和OLD分别代表执行触发器前后的记录。
NEW 的值可以被更新,OLD的值不能被更新
比如想执行触发器后,新值都加5 ,可以这样写NEW.value = OLD.value
MySQL AFTER DELETE触发器示例
- 创建表:
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语句创建AFTER DELETE触发器,如下所示:
DELIMITER // CREATE TRIGGER contacts_after_delete AFTER DELETE ON contacts FOR EACH ROW BEGIN DECLARE vUser varchar(50); -- 查找执行了insert操作的用户名,放到变量vUser中 SELECT USER() INTO vUser; -- 将delete操作记录放到审计表中 INSERT INTO contacts_audit ( contact_id, deleted_date, deleted_by) VALUES ( OLD.contact_id, SYSDATE(), vUser ); END; // DELIMITER ;