介绍
触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。
触发器的特性:1、有begin end体,begin end;之间的语句可以写的简单或者复杂2、什么条件会触发:I、D、U3、什么时候触发:在增删改前或者后(before/after)4、触发频率:针对每一行执行5、触发器定义在表上,附着在表上。
也就是由事件来触发某个操作,事件包括INSERT语句,UPDATE语句和DELETE语句;可以协助应用在数据库端确保数据的完整性。
语法
CREATE TRIGGER trigger_name
trigger_time: { BEFORE|AFTER }
ON tbl_name FOR EACH ROW
trigger_body
trigger_event: { INSERT| UPDATE | DELETE }
变量类型
类型
NEW和OLD使用
INSERT
NEW变量,获取Insert后的数据。
update
NEW变量,获取update后的数据;OLD变量,获取update前的数据。
delete
OLD变量,获取删除前数据
创建insert触发器
建表
CREATE TABLE t4_log(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
act_user VARCHAR(64),
act_type VARCHAR(50) ,
act_time VARCHAR(50),
act_id VARCHAR(20),
act_comment VARCHAR(100));
创建触发器
当t4表有新数据插入的时候,t4_log表会记录操作信息。
DELIMITER $$
CREATE/*[DEFINER = { user | CURRENT_USER }]*/TRIGGER `world`.`t_t4` AFTER INSERT
ON `world`.`t4`
FOR EACH ROW
BEGIN
INSERT INTO t4_log(act_user,act_type,act_time,act_id,act_comment)
VALUES (USER(),'insert',NOW(),new.id,
CONCAT('insert into t4 values(',new.id,',',new.name,',',new.age,',',new.gender,');'));
END$$
DELIMITER ;
查看触发器
mysql>show triggers;+---------+--------+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------+------------------------+----------+---------------+----------------------+-----------