SQL销售业务示例之一(基于northwind数据库)

--------------------------已签订单的产品停产------------------------------------
use northwind
  create proc p1 @delid int
  as
  begin
   delete from products where productid=@delid
  end
  --从产品表中删除一个产品
  create trigger product_del
  on products instead of delete
  as
  begin
  
   declare @pid int
   select * into #del from deleted
   declare cr cursor scroll for select productid from #del
   open cr
   fetch last from cr into @pid
   close cr
   deallocate cr
   delete from [order details] where productid=@pid
   --删除该产品订单细节的相关记录
   delete from products where productid=@pid
   --从产品表中删除该产品记录
  end
  exec p1 1
  --drop trigger product_del
  select * from products
  
  --------------------------------------------------我是分隔线,oh,yeah!!!!!!------------------------------------------------------------
  
  
  create trigger ins_order_details
  on [order details] instead of insert
  as
  begin
   --删除该产品后的容错触发器,禁止添加与该产品有关的订单
   declare @pid int
   select * into #ins from inserted
   declare cr cursor scroll for select productid from #ins
   open cr
   fetch last from cr into @pid
   close cr
   deallocate cr
   select * from [order details] where productid=@pid
   if @@rowcount=0
   begin
   print'该产品已经停产!'
   rollback
   end
   else commit
  
  end
  --drop trigger ins_order_details
  select * from [order details]
  insert into [order details] select 11077,9,15,45,0
  --有关删除记录的备份功能,参见本博客的SQL历史数据相关触发器示例
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值