当前位置: 首页 > news >正文

MySQL-5-触发器和储存过程

一、题目

二、过程及结果截图

1、触发器

1)使用mydb16_trigger数据库,建立表

建表goods

建表orders

2)插入数据

3)建立触发器

(1)建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试

建立触发器

mysql> delimiter //
mysql> create trigger orders_after_insert-> after insert on orders for each row-> begin->      update goods set num=num-new.onum where gid=new.gid;-> end //
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;

测试:添加订单

mysql> insert into orders(gid,name,price,onum,otime) values('A0001','橡皮',2.5,5,curdate());

测试结果:

(2)建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量

建立触发器

mysql> delimiter //
mysql>
mysql> create trigger orders_after_delete_teigger-> after delete on orders for each row-> begin->      update goods set num=num+old.onum where gid=old.gid;-> end //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;

测试:删除订单

mysql> delete from orders where oid=1;

测试结果:

(3)建立触发器,实现功能:客户修改订单,商品表对应商品数量同步更新

建立触发器

mysql> delimiter //
mysql> create trigger orders_after_update-> after update on orders for each row-> begin->       update goods set num=num+old.onum where gid=old.gid;->       update goods set num=num-new.onum where gid=new.gid;-> end //
Query OK, 0 rows affected (0.04 sec)mysql> delimiter ;

测试:修改订单,先取消后添加

提前添加订单,'小楷本'10份

mysql> insert into orders(gid,name,price,onum,otime) values('B0001','小楷本',2.8,10,curdate());

修改订单,'小楷本'15份

mysql> update orders set onum=15 where oid=2;

测试结果:

2、储存过程

(1)使用mydb7 openlab库

mysql> use mydb7_openlab ;Database changed

(2)创建提取emp_new表所有员工姓名和工资的存储过程s

先查询emp_new表所有员工姓名和工资

成功后再创建s1

mysql> delimiter //
mysql> create procedure s1()-> begin->       select name 姓名,incoming 工资 from emp_new;-> end //
Query OK, 0 rows affected (0.03 sec)mysql> delimiter ;

测试:

(3)创建存储过程s2,实现输入员工姓名后返回员工的年龄

先查询emp_new表“王五”的年龄

成功后再创建s2

mysql> delimiter //
mysql> create procedure s2(in iname varchar(11),out oage int)-> begin->       select age into oage from emp_new where name=iname;-> end //
Query OK, 0 rows affected (0.01 sec)mysql> delimiter ;

测试:

mysql> call s2('王五',@oage);
Query OK, 1 row affected (0.00 sec)

(4)创建一个存储过程s3,有2个参数,传入部门号,返回该部门的平均工资

先查询emp_new表部门号101部门的平均工资

成功后再创建s3

mysql> delimiter //
mysql> create procedure s3(in idept int,out avg_incoming decimal(8,2))-> begin->       select avg(incoming) into avg_incoming from emp_new where dept2=idept;-> end //
Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;

测试:

mysql> call s3(101,@avg_inc);
Query OK, 1 row affected, 1 warning (0.00 sec)

http://www.dtcms.com/a/581250.html

相关文章:

  • HTTPS是什么端口?443端口的工作原理与网络安全重要性
  • 从零搭建一个 PHP 登录注册系统(含完整源码)
  • Android 端离线语音控制设备管理系统:完整技术方案与实践
  • 网站流量一般多少合适asp网站实例
  • 想学网站建设与设计的书籍基于网站开发小程序
  • 【双指针类型】---LeetCode和牛客刷题记录
  • h5单页预览PDF文件模糊问题解决
  • LeetCode 每日一题 2025/11/3-2025/11/9
  • php网站开发干嘛的营销推广内容
  • STM32外设学习--TIM定时器--编码器接口
  • qiankun + Vue实现微前端服务
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(15):階段の訓練
  • 学习Linux——文件管理
  • C# OpenCVSharp使用yolo11n人脸关键点检测模型进行人脸检测
  • 【ATL定时器深度解析:概念、功能与项目实战指南】
  • wp_head() wordpressseo优化软件有哪些
  • 个人网站如何制作教程电子商务网站建设重点
  • 机器学习实践项目(二)- 房价预测增强篇 - 特征工程四
  • C++20之三路比较运算符
  • 微网站方案用dw做的网站怎么上线
  • 微软解除 Win11 限制,“毛玻璃”效果将无处不在
  • 班级回忆录系统|基于SpringBoot和Vue的班级回忆录系统(源码+数据库+文档)
  • 让 ETL 更懂语义:DataWorks 支持数据集成 AI 辅助处理能力
  • 新能源汽车底盘紧固件的“防腐密码”:从技术革新到体系共创
  • 前端性能优化实战:从理论到实践的深度解析
  • 【C++:红黑树】深入理解红黑树的平衡之道:从原理、变色、旋转到完整实现代码
  • 网站怎么做翻页徐州专业网站seo
  • 《算法通关指南数据结构和算法篇(4)--- 队列和queue》
  • 云计算运维监控实战:生产环境与自建方案对比
  • 深入理解MySQL行锁,间隙锁和临键锁