Mysql触发器

一、概述

触发器主要用于监听某个表的insert,update以及delete等更新操作,这些操作一旦被执行,可以激活该表的触发程序如insert,update,delete等命令,实现数据维护。


二、功能

功能:

实现检查约束,对字段范围检查约束

维护冗余数据,保证数据的一致性

模拟外键级联选项,在表中外键的功能


三、语法格式

create trigger 触发器名 触发时间 触发事件 on 表名 for each row

begin

触发程序

end;


触发时间有before和after

before 表示在触发事件发生之前执行触发程序

after 表示在触发事件发生之后执行触发程序


触发事件有insert,update,delete


for each row表示行级触发触发器


new和old

new代表修改后的新纪录

old代表旧纪录,只能读


注意要点

1.创建触发器必须指定触发器属于哪个数据库

2.触发器不能产生结果集

3.同一个表不能创建两个相同的触发事件,触发时间的触发程序


四、举例

先说明delimiter的使用

delimiter //delimiter ;两句,delimiter 是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,此用这个命令转换一下";"“//”,这样只有收到“//”才认为指令结束可以执行,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。


1.实现检查约束

delimiter //

create trigger test_trigger before insert on couser for each row

begin

if(age>60) then

insert into falsetable values(0);

else

set new.age=old.age;

end; 

//

delimiter ;


2.维护冗余数据

delimiter //

create trigger test before insert on student for each row

begin

update student set count=count+1 where new.no=old.no;

end;

//

delimiter ;


3.模拟外键级联选项

delimiter //

create trigger test before deleteon student for each row

begin

delete from student where age>old.no;

end;

//

delimiter;

delete from student  where age=18;


五、对触发器的操作

查看触发器的定义

查看但前所有触发器

show triggers\G

查看指定触发器

show create trigger test\G


删除触发器

drop trigger 触发器名;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值