数据库5(MySQL版)

作业要求

触发器

mysql> create trigger after_order_insert

-> after insert on orders

-> for each row

-> update goods set num = num - new.onum where gid = new.gid;

mysql> create trigger after_order_delete

-> after delete on orders

-> for each row

-> update goods set num = num + old.onum where gid = old.gid;

mysql> create trigger after_order_update

-> after update on orders

-> for each row

-> begin

-> if old.onum <> new.onum then

-> update goods set num = num - new.onum + old.onum where gid = new.gid;

-> end if;

-> end$$

-- 插入订单

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

-- 检查商品表中橡皮的数量

select num from goods where gid = 'a0001';

-- 删除订单

delete from orders where oid = 1;

-- 检查商品表中橡皮的数量

select num from goods where gid = 'a0001';

-- 更新订单 update orders set onum = 10 where oid = 1;

-- 检查商品表中橡皮的数量

select num from goods where gid = 'a0001';

存储过程

mysql> create procedure s1()

-> select name, incoming from emp_new;

mysql> create procedure s2(in emp_name varchar(50))

-> select age from emp_new where name = emp_name;

mysql> create procedure s3(in dept_id int)

-> select avg(incoming) as avg_incoming from emp_new where sid = dept_id;

mysql> call s1();

mysql> call s2('张三');

mysql> call s3(101);

相关推荐
程序定小飞1 小时前
基于springboot的web的音乐网站开发与设计
java·前端·数据库·vue.js·spring boot·后端·spring
小灰灰搞电子1 小时前
Rust 操作Sqlite数据库详细教程
数据库·rust·sqlite
IvorySQL1 小时前
你真的知道你正在运行哪个 PostgreSQL吗?
数据库·postgresql
l1t1 小时前
利用DeepSeek采用hugeint转字符串函数完善luadbi-duckdb的decimal处理
数据库·lua·c·duckdb·deepseek
无敌最俊朗@1 小时前
Qt 开发终极坑点手册图表版本
数据库
老衲提灯找美女2 小时前
MySQL数据库基础操作:
数据库·mysql·oracle
轻舟客丶2 小时前
ORA-03113的解决方案
数据库·经验分享·笔记·oracle
ヾChen2 小时前
头歌MySQL——复杂查询
数据库·物联网·学习·mysql·头歌
上下翻飞的屁3 小时前
jdbcTemplate执行sql后数据库字段没有更新问题解决
java·数据库·sql
悦光阴3 小时前
SQL Server 并发控制:Fabric Warehouse只支持快照隔离
大数据·运维·数据库·fabric