触发器(数据库必学)
文章目录
- 概念
- 注意
- 优缺点
- 优点
- 缺点
- 语法
- 参数说明
- 查看触发器
- 删除触发器
- 实例
- 实际应用
- 注意
- 重新编辑
- 拓展
- 不能对同一张表进行修改
概念
触发器是一种特殊类型的存储过程,它不同于存储过程,主要是通过事件触发而被执行的。而存储过程则需要主动调用其名字执行
注意
- 在 MySQL 5 中,触发器名必须在每个表中唯一,但不是在每个数据库中唯一,即同一数据库中的两个表可能具有相同名字的触发器
- 每个表的每个事件每次只允许一个触发器,因此,每个表最多支持 6 个触发器,before/after insert、before/after delete、before/after update
优缺点
优点
可以保证数据安全,并进行安全校验
缺点
过分依赖触发器,影响数据库的结构,增加数据库的维护成本
语法
delimiter 自定义结束符号 create trigger 触发器名字 触发时间 触发事件 on 表 for each row begin -- 触发器内容主体,每行用分号结尾 end 自定义的结束符合 delimiter ;
参数说明
1、触发器时间
当 SQL 指令发生时,会令行中数据发生变化,而每张表中对应的行有两种状态:数据操作前和操作后
- before:表中数据发生改变前的状态
- after:表中数据发生改变后的状态
2、触发事件
触发器是针对数据发送改变才会被触发,对应的操作只有
- INSERT
- DELETE
- UPDATE
查看触发器
1、查看全部
show triggers;
2、查看单个
show create trigger 触发器名称;
删除触发器
drop trigger 触发器名称;
实例
如果订单表发生数据插入,对应的商品库存应该减少
实际应用
上述数据是写死的,并不灵活,因为无论购买多少商品,始终 - 1
触发器针对的是数据库中的每一行记录,每行数据在操作前后都会有一个对应的状态,触发器将没有操作之前的状态保存到 old 关键字中,将操作后的状态保存到 new 中
注意
old 和 new 不是所有触发器都有
重新编辑
此时的new.goods_num是是orders表里面的goods_num,goods_id同理
拓展
当然我们还需要考虑一种情况:如果此时商品的库存不够了,该怎么处理?
解决:在 insert 之前查询库存,若不够就暴力解决
在此:如果在触发器中出现错误,那么前面的已经执行的操作也会全部清空
不能对同一张表进行修改
触发器(数据库必学)相关推荐
- 什么是数据库?数据库的作用想学数据库必看 (1)
1.DDL (Data Definition Language) 数据定义语言 数据定义语言 , 用来定义数据库对象:库 丶 表 丶 列等; CREATE 丶 ALTER 丶 DROP2.DML (D ...
- r语言必学的十个包肖凯_30 天学会R DAY 14:R语言必学包dplyr
原标题:30 天学会R DAY 14:R语言必学包dplyr 第14天 R语言必学包dplyr R语言非常讲究数据的整理,我们在7-13天的R语言学习内容中,着重都是关于R语言的整理,各种方法对数据进 ...
- Redis 的 4 大法宝,2018 必学中间件
转载自 Redis 的 4 大法宝,2018 必学中间件! Redis是什么? 全称:REmote DIctionary Server Redis是一种key-value形式的NoSQL内存数据库,由 ...
- 编程行业高手级别必学C语言,要挣大钱必学C语言,要做黑客、红客必学C语言,要面试名企、外企、高薪职位必学C语言。
于大部分程序员, C语言 是学习 编程 的第一门语言,很少有不了解C的程序员. C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如,计算机的各个部件是如何交互的, ...
- (87)FPGA锁存器与触发器-面试必问(十一)(第18天)
(87)FPGA锁存器与触发器-面试必问(十一)(第18天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA锁存器与触发器-面试必问(十一)(第18天) ...
- 小白新人Python哪些基础知识必学?
点击"程序IT圈"关注我一起学习成长 很多想入门的小伙伴还不知道Python应该怎么学,哪些知识必学,今天我们就来盘点一下. 01 入门方法推荐 总体来讲,找一本靠谱的书,由浅入深 ...
- 初级程序员必学Java 教程
Java 教程 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言. Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UN ...
- 高级网络管理员必学知识
!深圳北大青鸟网络工程师培训资料-高级网络管理员必学知识 第一部分:计算机结构及工作原理.各种零配件的性能参数及主流品牌.计算机硬件的组装,CMOS设置,硬盘的分区,格式化 ...
- 新开班全栈Linux运维-Linux云计算运维与高级架构班课程 全新自动化运维必学课程
新开班全栈Linux运维-Linux云计算运维与高级架构班课程 全新自动化运维必学课程 全栈Linux运维的课程意义,在于让同学们从Liunx基础课程开始,一路直通Liunx运维高级架构师的级别.全新 ...
最新文章
- 2014/08/24——升级stepbystep修复tc不刷新问题并加入杭电bc
- ecmall开发记录(三)
- GoLand 2019.1 发布 RC 候选版
- [ios] 微信订阅号: ios博文精选
- html 基础之canvas 和 localStorage
- 数学建模 层次分析法
- 经典面试题(28):以下代码将输出的结果是什么?
- jq跨域代理_jQuery中的跨域问题
- shell学习笔记 (9.1)
- 自动化测试 - 封装WebDriver的getDriver
- python就业方向-为什么这么多人喜欢Python?Python的就业方向是什么?
- 在程序中表示什么_程序开发中:什么是前后端分离?你搞清楚了吗?
- 单片机炫彩灯实训报告_单片机实验报告——流水灯
- 博弈论——完全信息博弈
- 易学笔记-系统分析师考试-第9章 系统规划/9.5 成本效益分析技术/9.5.3 投资回收期和投资回报率
- 说说 褥羊毛和薅羊毛的那些事
- SpringCloud[04]Ribbon负载均衡服务调用
- 深圳大学2019计算机科学考研分数,深圳大学2019年考研复试分数线已发布
- matlab 如何调用mex文件,matlab调用mex文件报错
- 联发科6758_mt6853相当于骁龙哪一款处理器 联发科mt6853相当于骁龙多少 - 云骑士一键重装系统...