
产品销售数据
-
2023年3月19日发(作者:华为财务报表)“销售数据库”中建立一个名为insert_aa的插入触发器,如果向销售表插入数
据时,“人员号”为空,则提示不允许插入数据,否则数据插入成功。
Createtriggerinsert_aaon
As
Declare@haochar(3)
Select
If
Begin
Print(’不允许插入数据’)
Rollbacktransaction
End
Else
Print(’插入成功’)
Go
产品销售数据库中包含如下几张表:其产品销售数据库中包含如下几张表:
product(产品表)、employee(员工表)、Customer(顾客表)、categories(产品类别
表)、orders(订单表)等。其中,product表结构为:产品编号、产品名、类别号、
单价、库存量、产品描述。Employee表结构为:员工编号、姓名、性别、入厂
时间、电话号码、地址。Customer表结构为:顾客编号、姓名、性别、联系电
话、地址。Categories表结构为:类别号、类别名称、详细描述。Orders表
结构为:订单号、顾客编号、员工编号、订单日期、发货日期、订单描述。根
据以下题目完成代码。
1.创建订单的详细情况表orderDetail表。它的表结构为:订单号、产品编号、
单价、数量、折扣、备注。请用Createtable语句创建这张表,并完成主键
和外键的设置,字段类型和长度自定;除了备注字段外,其它字段不能为
空;单价字段的值必须大于等于0;订单数量必须大于0;折扣值在0到1
之间(含0和1两值)。
2.创建一个存储过程pro_ShoppingTotal通过输出参数获得某位顾客所购产品
的总价格。
3.创建一个更新触发器tri_proStock,当向订单详表orderDetail表使用insert
into语句插入一个新订单时,被销售产品的库存数量可自动减少。(假定产
品的库存数量永远满足销售数量。)
4.创建用户自定义函数order-in-date,该函数通过两个时间参数指定起始时间
和终止时间,从而获得该时间段内需要发货的订单的产品详细情况。(涉及
到product表、order、orderDetail、customer表)
1.创建订单的详细情况表orderDetail表:它与orders表是一对多的关系。
CreatetableorderDetail(
订单号char(10)notnullforeignkeyreferencesorders(订单号),
产品编号char(10)notnullforeignkeyreferencesproduct(产品编号),
单价moneynotnullcheck(单价>=0),
数量smallintnotnullcheck(数量>0),
折扣realnotnullcheck(折扣>=0and折扣<=1),
备注char(50)
)
2.创建存储过程实现某位顾客所购产品的总价格。
Createprocedurepro_ShoppingTotal(
@customerIDchar(5),
@totalCostmoneyoutput
)
As
Select@totalCost=Sum(oderDetail.单价*orderDetail.数量*orderDetail.折扣)
from
orderDetail,order
where
顾客编号=@customerIDand
order.订单号=orderDetail.订单号
go
3.创建更新触发器,修改产品库存量
Createtriggertri_proStock
OnorderDetail
Aftertrigger
As
Declare@quantityint
Declare@pidchar(10)
Select@quantity=数量,@pid=产品编号frominserted
Updateproductset库存量=库存量-@quantitywhere产品编号=@pid
)
4.创建自定义函数返回某时间段内订单的详细明细。
Createfunctionorder-in-date
(@starttimedatetime,
@endtimedatetime)
Returnstable
As
Return(
Selectorder.订单号,customer.姓名,产品名,数量,product.价格,折扣,发货
时间
Fromproduct,order,orderDetail,customer
Whereproduct.产品编号=orderDetail.产品编号and
Order.订单号=orderDetail.订单号and
Order.顾客编号=customer.顾客编号and
发货日期between@starttimeand@endtime
)
1.销售forinsert
@hao=销售人员号frominserted
@hao’’