😀前言
本篇博文是关于数据库触发器的使用,希望你能够喜欢
🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在此感谢啦😊
文章目录
- 数据库触发器
- 介绍
- 什么是触发器
- 为什么能保持数据一致性?
- 触发器与存储过程的区别
- 创建触发器
- 语法:
- 语法解析
- 例题:
- 触发器可以对数据进行验证(存储过程可以嵌套在触发器和事件中)
- 触发器的使用
- 查看触发器
- 删除触发器
数据库触发器
介绍
什么是触发器
存储过程是对特定的SQL语句进行封装,完成数据库中复杂的数据处理逻辑,用于提供程序复用性。
触发器是一种特殊的存储过程,可以对表实施复杂的完整性约束,保持数据的一致性。
感兴趣的可以看看:
为什么能保持数据一致性?
当触发器所关联的数据改变时,触发器会自动被激活,并触发定义的相关操作,以此保持关联数据的完整性。
激活触发器的操作有:insert、update、delecte。
触发器与存储过程的区别
存储过程需要使用“ CALL 存储过程名(参数列表)”进行调用使用,触发器不需要显式调用。
定义了触发器,MYSQL会提供两张逻辑表:new用于存放更新后的记录;old用于存放更新前的记录。
两张表的表结构与触发器所在表结构相同,当触发器执行后,这两张表会自动删除。
创建触发器
语法:
create trigger 触发器名称
触发时间 触发事件
on 表名
for each row
程序体
语法解析
触发器名称:创建的触发器的名称。
触发时间:☞触发器执行时间可以用before或after,说明在触发器是在激活他的语句之前或之后触发。
触发事件:激活触发程序的语句类型,如:insert、update、delecte。
表名:触发事件操作的表名称。
for each row :表示任意一条记录上的操作满足触发事件都会触发该触发器。
程序体:触发器被触发后执行的语句集。
例题:
create trigger triaddnum //定义创建触发器的名称
after insert //数据插入完成后执行
on orders //触发器创建在orders表
for each row
set @total=@total +new.inum;//累加新增记录的购买记录
触发器不能显示调用,当触发事件发生时,触发器会自动执行。
//可以通过查看变量查看触发器执行结果。
set @total=0;//定义变量初始值
insert into orders(uid,gid,inum)
valuse(1,4,2),(1,1,3),(1,3,4);//添加数据
select @total;//查看变量@total的值
触发器可以对数据进行验证(存储过程可以嵌套在触发器和事件中)
delimiter//
create trigger tricheck
before insert
on users
for each row
begin
if length(new.upwd)>=6 then
set new.upwd=md5(new.upwd);
else
//自定义错误提示数据插入失败
signal sqlstate'45000'
set message_text='密码长度小于6,请重新输入';
end if;
end//
查看触发器是否执行可通过添加数据进行触发。
触发器的使用
查看触发器
show triggers
[{from | in} 数据库名]
[like 匹配模式 | where 条件表达式]
删除触发器
drop trigger [if exists] 触发器名称;
文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞