您的位置:首页 > 教育 > 锐评 > MySQL第五次作业

MySQL第五次作业

2024/10/5 20:25:05 来源:https://blog.csdn.net/2302_77662282/article/details/140693336  浏览:    关键词:MySQL第五次作业

82694038fab14b16b5d08027ab57fb5b.jpg

ad6c67b957dc4d178b7b11a26f021802.png 

6f6b017a77d54d2ca1c432346825f132.png 

4776c611f7234b8eba01897fde5e78f3.png

**一、触发器部分**

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');

47ffff3df7344effa0918562469713f4.png

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

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;

8eae319e09fa4c2faf90c41523074a94.png

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

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;

93bccf1d5a7d4392ac1bca38353e5002.png

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

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

USE mydb7_openlab;

CREATE PROCEDURE s1()

    SELECT name, salary FROM emp_new;

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

CREATE PROCEDURE s2(IN emp_name VARCHAR(50))

    SELECT age FROM emp_new WHERE name = emp_name;

3. 创建一个存储过程 `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;

d3f117142f3548b484783e0e8984afa0.png

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com