第七次作业

建立两个表:Goods(商品表)、Orders(订单表)
-- 
-- Goods(商品表)
-- 	create table Goods
-- 	(
-- 		gid 	char(8)  not null    primary key, #商品编号
-- 		name    varchar(10),		              #商品名
-- 		price   decimal(8,2),                     #价格
-- 		num     int                               #数量
-- 	);
-- 
-- 	create table Orders
-- 	(
-- 		  oid         int        not null  primary key     auto_increment,     #订单号
-- 		  gid         char(10)   not null,                                     #商品号
-- 		  name        varchar(10),				                               #商品名
-- 		  price       decimal(8,2),                                            #价格
-- 		  onum        int ,                                                    #订单数量
-- 		  otime       date                                                     #订单时间
-- 	); 
-- 	
-- 在商品表中导入商品
-- 	insert into Goods values
-- 	('A0001', '橡皮',  2.5,  100),
-- 	('B0001','小楷本', 2.8, 210),
-- 	('C0001','铅笔',  1.2,  120),
-- 	('D0001','计算器',28, 20);
-- 	
-- 1、建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量
DELIMITER //
CREATE TRIGGER TRIGGER1
AFTER INSERT ON Orders
FOR EACH ROW
BEGIN
   UPDATE Goods
   SET num = num - NEW.onum
   WHERE gid = NEW.gid;
END //
 
DELIMITER ;
-- 2、建立触发器,实现功能:客户取消订单,恢复商品表对应商品的数量
DELIMITER //
CREATE TRIGGER TRIGGER1
AFTER delete ON Orders
FOR EACH ROW
BEGIN
   UPDATE Goods
   SET num = num + old.onum
   WHERE gid = old.gid;
END //
delimiter ;
-- 3、建立触发器,实现功能:客户修改订单,商品表对应商品数量同步更新
DELIMITER //
CREATE TRIGGER update
AFTER update ON Orders
FOR EACH ROW
BEGIN
   UPDATE Goods
   SET num = num + old.onum - NEW.onum
   WHERE gid = old.gid;
END //
delimiter ;
-- 4、建立触发器,实现功能:对于所下订单,进行判断,如果订单的数量>库存数量,就认为是恶意订单,把订单数量变为库存最大数量。
delimiter //
CREATE TRIGGER INSERT
AFTER INSERT ON orders
FOR EACH ROW
BEGIN	
	if(SELECT num FROM goods WHERE gid=new.gid) < NEW.num then
	
		UPDATE Goods
   	SET num = num  - NEW.onum
   	WHERE gid = old.gid;
   else
   	UPDATE orders 
   	SET onum = num WHERE gid = goods.gid
   	WHERE gid = old.gid;
   
   	UPDATE Goods
   	SET num = 0
   	WHERE gid = old.gid;
END if;
delimiter ;

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值