sqlServer 触发器的使用(并判断insert、update、delete)、游标的使用

if(object_id('sendCardTrigger','tr') is not null) 
drop trigger  sendCardTrigger
go
create trigger  sendCardTrigger
on DispatchCarSendCard
for insert,update,delete  
as 
declare  @typeCard nvarchar(50) ,@cardId nvarchar(50),@plateNumber nvarchar(50),@PersonId nvarchar(50), @ticketIds nvarchar(50),
 @rowNumber int,@id nvarchar(50),@ticketId nvarchar(50),@types nvarchar(50),@customerId nvarchar(50),@customerName nvarchar(50)
    ,@materialId nvarchar(50),@material nvarchar(50),@amount float, @sDate nvarchar(50),@sTime nvarchar(50),@optUser nvarchar(50),@states int,
    @S01 nvarchar(50),@S02 nvarchar(50),@S03 nvarchar(50),@S04 nvarchar(50),@S05 nvarchar(50),@S06 nvarchar(50),@S07 nvarchar(50),@S08 nvarchar(50),@S09 nvarchar(50),
    @isBucket nvarchar(50),@buckets nvarchar(50),@bucketWeight nvarchar(50)
    if exists(select 1 from inserted) and not exists( select 1 from deleted) --insert 操作
        begin 
            select @typeCard=type,@cardId=id, @plateNumber=PlateNum,@PersonId=by4,@ticketIds=planid from inserted
            if(@typeCard='原盐采购')
                begin
                    ---1.声明游标
                    declare  cur Cursor scroll for select * from ticket where ticketId=@ticketIds
                    --2.打开游标
                    open     cur
                    --3.定位游标第一行,
                    fetch first from cur into @rowNumber,@id,@ticketId,@types,@customerId,@customerName,@materialId,@material,@amount,@sDate,@sTime,@optUser,@states,
                    @S01,@S02,@S03,@S04,@S05,@S06,@S07,@S08,@S09,@isBucket,@buckets,@bucketWeight
                    --4. 关闭游标
                    close cur
                    --5. 释放游标
                    deallocate cur
                    insert into ticketVerify(rowNumber,id,ticketId,types,customerId,customerName,materialId,material,amount,sDate,sTime,optUser,states,S01
                    ,S02,S03,S04,S05,S06,S07,S08,S09,isBucket,buckets,bucketWeight,cardId,plateNumber,PersonId,checkState)values(@rowNumber,@id,@ticketId,@types,
                    @customerId,@customerName,@materialId,@material,@amount,@sDate,@sTime,@optUser,@states,@S01,@S02,@S03,@S04,@S05,@S06,@S07,@S08,@S09,@isBucket,@buckets,
                    @bucketWeight,@cardId,@plateNumber,@PersonId,'0')
                    
                end
            
        end
    else if exists(select 1 from inserted) and exists(select 1 from deleted) --update 操作
        begin
            select @typeCard=type,@cardId=id, @plateNumber=PlateNum,@PersonId=by4 ,@ticketIds=planid from inserted
            if(@typeCard='原盐采购')
                begin
                    ---1.声明游标
                    declare  cur Cursor scroll for select * from ticket where ticketId=@ticketIds
                    --2.打开游标
                    open     cur
                    --3.定位游标第一行,
                    fetch first from cur into @rowNumber,@id,@ticketId,@types,@customerId,@customerName,@materialId,@material,@amount,@sDate,@sTime,@optUser,@states,
                    @S01,@S02,@S03,@S04,@S05,@S06,@S07,@S08,@S09,@isBucket,@buckets,@bucketWeight
                    --4. 关闭游标
                    close cur
                    --5. 释放游标
                    deallocate cur
                    update ticketVerify set rowNumber=@rowNumber,id=@id,ticketId=@ticketId,types=@types,customerId=@customerId,
                    customerName=@customerName,materialId=@materialId,material=@material,amount=@amount,sDate=@sDate,sTime=@sTime,
                    optUser=@optUser,states=@states,S01=@S01,S02=@S02,S03=@S03,S04=@S04,S05=@S05,S06=@S06,S07=@S07,S08=@S08,S09=@S09,
                    isBucket=@isBucket,buckets=@buckets,bucketWeight=@bucketWeight,cardId=@cardId,                
                    plateNumber=@plateNumber,PersonId=@PersonId,checkState='0' where  cardId=@cardId
                    
                end
        end
    else if not exists(select 1 from inserted) and exists(select 1 from deleted) --delete 操作
        begin
            select @typeCard=type,@cardId=id, @plateNumber=PlateNum,@PersonId=by4 from deleted
            if(@typeCard = '原盐采购')
            begin
                update ticketVerify set del='1' where cardId=@cardId 
            end
        end
 
    
     
    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值