热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

触发器_(17)MySQL中的触发器

篇首语:本文由编程笔记#小编为大家整理,主要介绍了(17)MySQL中的触发器相关的知识,希望对你有一定的参考价值。MySQL中的触发器

篇首语:本文由编程笔记#小编为大家整理,主要介绍了( 17 )MySQL中的触发器相关的知识,希望对你有一定的参考价值。


MySQL中的触发器



 

触发器


需求:有两张表,一张定单表,一张商品表.每生成一个订单,商品库存就相应减少.


触发器 ( trigger )


事先为某张表绑定好一段代码,当某些内容发生改变的时候(增删该),系统会自动触发代码的执行.

触发器包括 : 事件类型,触发时间,触发对象

事件类型: 增删改,三种类型 insert ,delete和update.

触发时间: 触发前后 before 和 after

触发对象:表中的每一条记录(行)

一张表中只能有一种触发时间的一种类型的触发器 : 一张表最多有6个触发器.


创建触发器


------------------------------------------------------------

-- 临时修改语句结束符

delimiter 自定义符号

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

begin -- 代表左大括号:开始

-- 里面是触发器的内容

end --代表右大括号:结束

-- 将临时修改的语句结束符修改为分号

delimiter ;

------------------------------------------------------------


创建表并插入数据

 技术分享

 

-- 创建触发器 生成一个订单,商品库存减少


delimiter $

create trigger after_order after insert on my_order for each_row

begin

-- 触发器内容开始

update my_goods set inv = inv-new.g_number where id = new.id ;

end

delimit ;

技术分享

 


查看触发器


查看所有触发器或者模糊匹配

show trigger [like ‘pattern‘]

技术分享


查看触发器创建语句:


show create trigger 触发器名字 ;

所有的触发器都会保存到系统的一张表中 information_schemea.triggers

技术分享


使用触发器


触发器:不需要手动调用,当某种情况(触发类型)下会自动触发.

技术分享


修改触发器&&删除触发器


触发器不能被修改,只能删除之后新增

drop trigger 触发器名称 ;


触发器记录


触发器记录 : 不管触发器是否触发了,只要当某种操作准备执行,系统就会将当前操作记录的当前状态和即将执行之后的新的状态给分别保留下来,供触发器使用.其中要操作当前状态保存在old中,操作之后的可能形态保存到new中.

技术分享



old 代表的是就记录,new代表新纪录

插入的时候没有old , 删除的时候没有new. 任何一条记录除了有数据,还有字段名字.

old和new的使用方式 : old.字段名 / new.字段名 (new 代表假设发生之后的结果)


执行代码结构


执行代码结构 : 顺序结构,分支结构,循环结构

分支结构:实现准备多个代码块,按照条件选择性执行某段代码

mysql中只有 if 分之

基本语法:

-----------------------------------------------------------

if 条件判断 then

-- 满足条件要执行的代码

else

-- 不满足条件执行的代码

end if ;

------------------------------------------------------------

技术分享

 


触发器结合if分支,若商品数量不够,就不能生成订单.

 

循环结构


循环结构: 某段代码在指定的条件重复执行


while循环基本语法


------------------------------------------------------------

while 条件判断 do

-- 满足条件要执行的代码

-- 变更循环条件

end while ;

------------------------------------------------------------


循环控制 : 在循环内部进行循环判断,mysql中没有continue和break.


iterate : 迭代,类似continue 后面的代码不执行,循环重新来过

leave : 离开 类似break 整个循环结束.

使用方式: iterate / leave 循环名字;

-- 定义循环名字

循环名字 : while 条件 do

-- 循环体

--循环控制

iterate / leave 循环名字 ;

end while ;


 


推荐阅读
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 在什么情况下MySQL的可重复读隔离级别会导致幻读现象? ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 本文深入解析了WCF Binding模型中的绑定元素,详细介绍了信道、信道管理器、信道监听器和信道工厂的概念与作用。从对象创建的角度来看,信道管理器负责信道的生成。具体而言,客户端的信道通过信道工厂进行实例化,而服务端则通过信道监听器来接收请求。文章还探讨了这些组件之间的交互机制及其在WCF通信中的重要性。 ... [详细]
  • 使用多项式拟合分析淘宝双11销售趋势
    根据天猫官方数据,2019年双11成交额达到2684亿元,再次刷新历史记录。本文通过多项式拟合方法,分析并预测未来几年的销售趋势。 ... [详细]
  • 如何将Python与Excel高效结合:常用操作技巧解析
    本文深入探讨了如何将Python与Excel高效结合,涵盖了一系列实用的操作技巧。文章内容详尽,步骤清晰,注重细节处理,旨在帮助读者掌握Python与Excel之间的无缝对接方法,提升数据处理效率。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
  • R语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R本来是由来自新西兰奥克兰大学的RossIhaka和RobertGentleman开发(也因此称为R),现在由R开 ... [详细]
  • 开发笔记:AJAX了解内容
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了AJAX了解内容相关的知识,希望对你有一定的参考价值。1.什么是AJAX?AJAX ... [详细]
  • 一、使用ContentProvider(内容提供者)共享数据ContentProvider在android中的作用是对外共享数据,也就是说 ... [详细]
author-avatar
传闻中的张先生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有