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;

相关推荐
n***4439 小时前
mysql查看binlog日志
数据库·mysql
k***082910 小时前
mysql中general_log日志详解
android·数据库·mysql
一辉ComeOn10 小时前
【大数据高并发核心场景实战】 数据持久化层 - 分表分库
java·大数据·分布式·mysql·系统架构
i***586710 小时前
【MySQL数据库】Ubuntu下的mysql
数据库·mysql·ubuntu
一叶飘零_sweeeet10 小时前
MySQL锁机制深度剖析:从底层原理到实战避坑,一篇吃透所有锁!
数据库·mysql·
r***113310 小时前
【MySQL】MySQL库的操作
android·数据库·mysql
星光一影10 小时前
同城派送系统源码,支持小程序,h5,app
mysql·小程序·php·uniapp
h***673711 小时前
Mysql 驱动程序
数据库·mysql
Y***h18711 小时前
MySQL不使用子查询的原因
android·数据库·mysql
Ka1Yan11 小时前
快速上手MySQL中的JSON函数语法——5.x+ / 8.x+
数据库·sql·mysql·json