简单了解Mysql中的触发器

触发器概念

trigger,一个特殊的存储过程。与表事件相关,达到指定条件(之前或者之后)而自动执行。

触发器的作用

1、数据操作前进行校验或者修改;

2、记录数据操作记录,保证数据的完整性。

触发器要素

触发事件:新增(insert)、删除(delete)、更新(update);

触发时间:指定触发器在触发事件之前( before)或者之后(after)执行;

触发对象:表中每一行(each row)记录。

具体演示(仅仅以新增为例,删除和更新创建触发器类似)

1、建表(之前我把表删了),添加一条数据

CREATE TABLE `user` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`name` VARCHAR (64) NOT NULL,
	`age` INT NOT NULL,
	`phone` CHAR (11) NOT NULL,
	PRIMARY KEY (`id`)
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;

 

2、创建一个新增(insert)操作之前的触发器,校验age

create trigger 触发器名称 触发时间 触发事件 on 表名 for each row 触发器程序
DELIMITER ;; -- 临时修改结束符号(;;),可以自定义
create trigger tri_before_insert before insert
    on user
    for each row
    begin 
        if new.age <=0 then
         signal sqlstate 'S0001' set message_text = 'age应该大于0' ;
        end if;
    end;;
DELIMITER ;--将结束符号修改成英文分号(;)

3、新建一张操作记录表

create table if not exists `user_oper_record`(
    `id` int not null auto_increment,
    `user_id` int not null,
    `oper_type` char(1) not null,
    `oper_time` datetime not null,
    `name` varchar(64) not null,
    `age` int not null,
    `phone` char(11) not null,
    primary key (`id`)
    )ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

4、创建一个user表新增(insert)操作后的触发器,记录操作记录

DELIMITER ##
create trigger tri_after_insert after insert
    on user
    for each row
    begin 
       insert into user_oper_record(id, user_id, oper_type, oper_time, name, age, phone) values (null, new.id, '1',  now(), new.name, new.age, new.phone);
    end##
DELIMITER ;

5、查看触发器

show triggers;
show triggers\G

6、删除触发器

 drop trigger 触发器名称;

 

 

如果有写的不对的地方,请大家多多批评指正,非常感谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值