实验九 存储过程和触发器

题目

  1. 创建并执行一个无参数的存储过程proc_product1,通过该存储过程可以查询商品类别名称为"笔记本电脑"的商品的详细信息:包括商品编号、商品名称、品牌、库存量、单价和上架时间信息

2、创建并执行一个带输入参数的存储过程proc_product2,通过该存储过程可以根据输入参数供应商名称和包含关键字的商品名称进行商品具体信息的查询:包括商品编号、商品名称、品牌、库存量、单价、成本价、供应商名称、联系电话信息

3、创建并执行一个带输入参数和输出参数的存储过程proc_product3,通过该存储过程可以根据输入的会员用户名查询出该会员购买的商品信息:包括商品名称、购买数量和实付总金额信息

4、删除存储过程proc_product3

5、创建一个名为tri_insert1的DML触发器,该触发器的作用是:当向会员表member中添加一条记录时,如果新添加的会员编号已经存在于表中,则禁止插入该条记录,并提示该会员已经存在!。

6、创建一个名为tri_update1的DML触发器,该触发器的作用是:不允许修改订单表orders中的discount属性列的值,并给出提示语句"禁止修改orders表中的discount属性列的数据!"

7、创建一个名为tri_insert2的DML触发器,该触发器的作用是:当向会员表member新插入一条会员记录时,系统自动将部门表department中对应部门的属性列deptotal进行加1处理

8、创建一个名为tri_delete的DML触发器,该触发器的作用是:用删除会员表menmber中某条会员记录的时,系统自动在订单表orders中查询是否有该会员的订单记录,如果有,则同时删除该会员的所有订单记录

9、删除触发器tri_delete

步骤

  1. 创建并执行一个无参数的存储过程proc_product1,通过该存储过程可以查询商品类别名称为"笔记本电脑"的商品的详细信息:包括商品编号、商品名称、品牌、库存量、单价和上架时间信息

Create procedure proc_product1 as

select prono, proname, brand, stock, price, ontime from product

2.创建并执行一个带输入参数的存储过程proc_product2,通过该存储过程可以根据输入参数供应商名称和包含关键字的商品名称进行商品具体信息的查询:包括商品编号、商品名称、品牌、库存量、单价、成本价、供应商名称、联系电话信息

Create procedure proc_product2(@supname varchar(255), @keyword varchar(255))

as

select prono, proname, brand,

stock, price, cost, supname, telephone

from product

left join supplier

on supplier.supno = product.supno

where supname = @supname and proname like '%' + @keyword + '%'

3.创建并执行一个带输入参数和输出参数的存储过程proc_product3,通过该存储过程可以根据输入的会员用户名查询出该会员购买的商品信息:包括商品名称、购买数量和实付总金额信息

Create procedure proc_product3

@memname varchar(50)

as

select proname,qty,totalmoney

from member,product,orders

where member.memno=orders.memno and orders.prono=product.prono and memname = @memname

4、删除存储过程proc_product3

drop procedure proc_product3

5、创建一个名为tri_insert1的DML触发器,该触发器的作用是:当向会员表member中添加一条记录时,如果新添加的会员编号已经存在于表中,则禁止插入该条记录,并提示该会员已经存在!。

CREATE TRIGGER tri_insert1

on member

for insert

as

begin

declare @memno int;

select @memno = memno from inserted;

select * from member where memno = @memno;

if exists(select * from member where memno = @memno)

begin

rollback tran

print '不允许添加'

end

End

6、创建一个名为tri_update1的DML触发器,该触发器的作用是:不允许修改订单表orders中的discount属性列的值,并给出提示语句"禁止修改orders表中的discount属性列的数据!"

CREATE TRIGGER tri_update1

on orders

after update

as

if update(discount)

begin

rollback tran

print'禁止修改orders表中的discount属性列的数据!'

End

  1. 创建一个名为tri_insert2的DML触发器,该触发器的作用是:当向会员表member新插入一条会员记录时,系统自动将部门表department中对应部门的属性列deptotal进行加1处理

CREATE TRIGGER tri_insert2

on employee

after insert

as

begin

update department

set deptotal = deptotal+1

where depno = (select depno from inserted);

End

  1. 创建一个名为tri_delete的DML触发器,该触发器的作用是:用删除会员表menmber中某条会员记录的时,系统自动在订单表orders中查询是否有该会员的订单记录,如果有,则同时删除该会员的所有订单记录

CREATE TRIGGER tri_delete

on member

for delete

as

delete from orders

where memno=(select memno from deleted)

9、删除触发器tri_delete

drop trigger tri_delete

相关推荐
loong_XL4 小时前
docker gpu容器镜像环境构建
运维·docker·容器
杨了个杨89825 小时前
nginx常见功能部署
运维·服务器·nginx
Whisper_Sy6 小时前
Flutter for OpenHarmony移动数据使用监管助手App实战 - 网络状态实现
android·java·开发语言·javascript·网络·flutter·php
小天源6 小时前
linux漏洞一键扫描
linux·运维·服务器·漏洞扫描
eWidget7 小时前
InfluxDB迁移至金仓数据库的同城容灾实践:性能显著提升、运维效率优化,某能源企业实现RPO_5秒的高可靠时序数据管理
运维·数据库·能源·时序数据库·kingbase·kingbasees·金仓数据库
Black蜡笔小新7 小时前
视频汇聚平台EasyCVR打造校园消防智能监管新防线
网络·人工智能·音视频
珠海西格电力科技7 小时前
双碳目标下,微电网为何成为能源转型核心载体?
网络·人工智能·物联网·云计算·智慧城市·能源
m0_696212687 小时前
个人微信api
运维·服务器
en-route7 小时前
SSH Key 与 GPG Key 区别详解:Git 使用中的身份与签名机制
运维·git·ssh
码农水水8 小时前
中国邮政Java面试被问:容器镜像的多阶段构建和优化
java·linux·开发语言·数据库·mysql·面试·php