MySQL第五次作业

**一、触发器部分**

  1. 订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量

CREATE TRIGGER update_goods_num_after_insert_orders

AFTER INSERT ON orders

FOR EACH ROW

UPDATE goods

SET num = num - NEW.onum

WHERE gid = NEW.gid;

-- 测试

INSERT INTO orders (gid, name, price, onum, otime)

VALUES ('A0001', '橡皮', 2.5, 10, '2024-07-25');

  1. 客户取消订单,恢复商品表对应商品的数量

CREATE TRIGGER restore_goods_num_after_cancel_order

AFTER DELETE ON orders

FOR EACH ROW

UPDATE goods

SET num = num + OLD.onum

WHERE gid = OLD.gid;

-- 测试

DELETE FROM orders WHERE oid = 1;

  1. 客户修改订单,商品表对应商品数量同步更新

CREATE TRIGGER update_goods_num_after_update_orders

AFTER UPDATE ON orders

FOR EACH ROW

UPDATE goods

SET num = num + OLD.onum - NEW.onum

WHERE gid = NEW.gid;

-- 测试

UPDATE orders SET onum = 20 WHERE oid = 2;

**二、存储过程部分**

  1. 创建提取 `emp_new` 表所有员工姓名和工资的存储过程 `s1`

USE mydb7_openlab;

CREATE PROCEDURE s1()

SELECT name, salary FROM emp_new;

  1. 创建存储过程 `s2`,实现输入员工姓名后返回员工的年龄

CREATE PROCEDURE s2(IN emp_name VARCHAR(50))

SELECT age FROM emp_new WHERE name = emp_name;

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

CREATE PROCEDURE s3(IN dept_id INT, OUT avg_salary DECIMAL(10, 2))

SELECT AVG(salary) INTO avg_salary FROM emp_new WHERE department_id = dept_id;

相关推荐
Johny_Zhao2 小时前
MySQL 高可用集群搭建部署
linux·人工智能·mysql·信息安全·云计算·shell·yum源·系统运维·itsm
oydcm2 小时前
MySQL数据库概述
数据库·mysql
husterlichf3 小时前
MYSQL 常用数值函数 和 条件函数 详解
数据库·sql·mysql
卡皮巴拉爱吃小蛋糕4 小时前
MySQL的MVCC【学习笔记】
数据库·笔记·mysql
玄明Hanko4 小时前
生产环境到底能用Docker部署MySQL吗?
后端·mysql·docker
清流君4 小时前
【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作
数据库·人工智能·笔记·mysql·ue5·数字孪生
邂逅岁月4 小时前
MySQL表的增删改查初阶(下篇)
数据库·sql·mysql
逾非时6 小时前
MySQL触法器
android·mysql·sqlserver
聪明的墨菲特i6 小时前
SQL进阶知识:九、高级数据类型
xml·数据库·sql·mysql·json·空间数据类型
艺杯羹6 小时前
JDBC 批处理与事务处理:提升数据操作效率与一致性的密钥
数据库·mysql·jdbc·事务处理·批处理数据