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;

相关推荐
夏炎正好眠4 小时前
mysql练习
数据库·mysql
驜鸈6 小时前
MySQL 的EXPLAIN 计划 type 字段详细说明
android·数据库·mysql
嗨起飞了7 小时前
MySQL入门手册
数据库·mysql
程序员的世界你不懂8 小时前
Mysql配置文件My.cnf(my.ini)配置参数说明
数据库·mysql·百度·新浪微博
ChinaRainbowSea8 小时前
MySQL 索引的数据结构(详细说明)
java·数据结构·数据库·后端·mysql
追风赶月、8 小时前
【MySQL】事务(隔离性、MVCC)
数据库·mysql
Lemon_man_9 小时前
基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程
python·mysql·django
A仔不会笑11 小时前
MySQL面试篇——性能优化
java·数据库·mysql·面试·性能优化
考虑考虑12 小时前
MySQL中的DATE_FORMAT时间函数
数据库·后端·mysql
杭州刘同学13 小时前
autogen studio如何修改数据库为mysql
mysql·autogen