SQLServer 实验十二 触发器

请完成下面实验内容:

(1) 创建触发器,该触发器仅允许“dbo”用户可以删除Employee表内数据。

create trigger EmploteeDelete

on employee

for delete

as

if exists (select * from deleted)

begin

    if user!='dbo'

        begin

            print '该用户无权删除!'

            rollback

     end                               

  end

测试:(以sa用户)

delete from employee

where employeeno='E2005001'

测试:(以其他用户)

sp_addlogin   'star','star$sjj0482'

sp_adduser  'star','star'

GRANT   select,insert,delete,update

ON employee

TO star

delete from employee

where employeeno='E2006001'

(2) 创建触发器,当向订单明细表添加销售明细数据时,统计该订单销售金额。要求:如果订单金额5000元及以上,则该订单中销售的所有商品按9折进行优惠处理(更新订单明细表中成交价格),同时还应更新订单总表中该订单的订单金额。

create trigger [dbo].[orderdetailins]

on [dbo].[OrderDetail]

for insert

as

begin

  declare @orderno char(12),@newsum numeric(7,2)

  declare orderdetailcur cursor for

  select orderno from inserted

  open orderdetailcur

  fetch next from orderdetailcur into @orderno

  while @@fetch_status=0

      begin

          declare orderdetailsumcur cursor for

          select orderno,newsum=sum(quantity*price)

          from orderdetail

          where orderno=@orderno

          group by orderno

          open orderdetailsumcur

          fetch next from  orderdetailsumcur  into @orderno,@newsum

          while @@fetch_status=0

          begin

            if  @newsum>=5000            

                update orderdetail

                set price=productprice*0.9

                from  product a,orderdetail b

                where a.productno=b.productno and b.orderno=@orderno                        

               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Water plum

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值