文章目录

  • 概念
    • 注意
  • 优缺点
    • 优点
    • 缺点
  • 语法
    • 参数说明
  • 查看触发器
  • 删除触发器
  • 实例
  • 实际应用
    • 注意
    • 重新编辑
    • 拓展
    • 不能对同一张表进行修改

概念

触发器是一种特殊类型的存储过程,它不同于存储过程,主要是通过事件触发而被执行的。而存储过程则需要主动调用其名字执行

注意

  1. 在 MySQL 5 中,触发器名必须在每个表中唯一,但不是在每个数据库中唯一,即同一数据库中的两个表可能具有相同名字的触发器
  2. 每个表的每个事件每次只允许一个触发器,因此,每个表最多支持 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)

    1.DDL (Data Definition Language) 数据定义语言 数据定义语言 , 用来定义数据库对象:库 丶 表 丶 列等; CREATE 丶 ALTER 丶 DROP2.DML (D ...

  2. r语言必学的十个包肖凯_30 天学会R DAY 14:R语言必学包dplyr

    原标题:30 天学会R DAY 14:R语言必学包dplyr 第14天 R语言必学包dplyr R语言非常讲究数据的整理,我们在7-13天的R语言学习内容中,着重都是关于R语言的整理,各种方法对数据进 ...

  3. Redis 的 4 大法宝,2018 必学中间件

    转载自 Redis 的 4 大法宝,2018 必学中间件! Redis是什么? 全称:REmote DIctionary Server Redis是一种key-value形式的NoSQL内存数据库,由 ...

  4. 编程行业高手级别必学C语言,要挣大钱必学C语言,要做黑客、红客必学C语言,要面试名企、外企、高薪职位必学C语言。

    于大部分程序员, C语言 是学习 编程 的第一门语言,很少有不了解C的程序员. C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如,计算机的各个部件是如何交互的, ...

  5. (87)FPGA锁存器与触发器-面试必问(十一)(第18天)

    (87)FPGA锁存器与触发器-面试必问(十一)(第18天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)FPGA锁存器与触发器-面试必问(十一)(第18天) ...

  6. 小白新人Python哪些基础知识必学?

    点击"程序IT圈"关注我一起学习成长 很多想入门的小伙伴还不知道Python应该怎么学,哪些知识必学,今天我们就来盘点一下. 01 入门方法推荐 总体来讲,找一本靠谱的书,由浅入深 ...

  7. 初级程序员必学Java 教程

    Java 教程 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言. Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UN ...

  8. 高级网络管理员必学知识

                  !深圳北大青鸟网络工程师培训资料-高级网络管理员必学知识 第一部分:计算机结构及工作原理.各种零配件的性能参数及主流品牌.计算机硬件的组装,CMOS设置,硬盘的分区,格式化 ...

  9. 新开班全栈Linux运维-Linux云计算运维与高级架构班课程 全新自动化运维必学课程

    新开班全栈Linux运维-Linux云计算运维与高级架构班课程 全新自动化运维必学课程 全栈Linux运维的课程意义,在于让同学们从Liunx基础课程开始,一路直通Liunx运维高级架构师的级别.全新 ...

最新文章

  1. 2014/08/24——升级stepbystep修复tc不刷新问题并加入杭电bc
  2. ecmall开发记录(三)
  3. GoLand 2019.1 发布 RC 候选版
  4. [ios] 微信订阅号: ios博文精选
  5. html 基础之canvas 和 localStorage
  6. 数学建模 层次分析法
  7. 经典面试题(28):以下代码将输出的结果是什么?
  8. jq跨域代理_jQuery中的跨域问题
  9. shell学习笔记 (9.1)
  10. 自动化测试 - 封装WebDriver的getDriver
  11. python就业方向-为什么这么多人喜欢Python?Python的就业方向是什么?
  12. 在程序中表示什么_程序开发中:什么是前后端分离?你搞清楚了吗?
  13. 单片机炫彩灯实训报告_单片机实验报告——流水灯
  14. 博弈论——完全信息博弈
  15. 易学笔记-系统分析师考试-第9章 系统规划/9.5 成本效益分析技术/9.5.3 投资回收期和投资回报率
  16. 说说 褥羊毛和薅羊毛的那些事
  17. SpringCloud[04]Ribbon负载均衡服务调用
  18. 深圳大学2019计算机科学考研分数,深圳大学2019年考研复试分数线已发布
  19. matlab 如何调用mex文件,matlab调用mex文件报错
  20. 联发科6758_mt6853相当于骁龙哪一款处理器 联发科mt6853相当于骁龙多少 - 云骑士一键重装系统...

热门文章

  1. linux关闭5353端口,关闭selinux和防火墙开启状态增加3306端口
  2. 气象环境监测站应用项目
  3. sql统计一年销售数据
  4. 【SSD20X平台Linux应用开发】串口应用编程
  5. 【踩坑记录】文件查找失败(hbuilderx)
  6. Python 读写txt和excel文件及操作数据库
  7. 【生活】已经从官网购买iPad,单独购买AppleCare+服务
  8. 汽车PKE无钥匙入一键启动手机智能控车系统
  9. 【Typescript】paths alias别名设置
  10. 小程序门店助手认证流程