修改数据触发器

CREATE  trigger [dbo].[EMTinCar_update] 
on [dbo].[EMTinCar] 
for update 
as
if update(SetTime)

BEGIN

declare @ID int,@VehicleOrder_ID int,@VehicleStateType_ID int,@EMCarStateType_ID int,@VehicleStateType_IDOld int,@VehicleOrderOld int;
select @ID=p2.ID,@EMCarStateType_ID=emcar1.EMCarStateType_ID FROM inserted p1
inner JOIN deleted p2 ON p1.id=p2.id
INNER JOIN EMCar emcar1 on p1.EMCar_ID=emcar1.ID 


IF (@EMCarStateType_ID!=1)
begin
set @VehicleStateType_ID=4 --类型不显示

end
else 
begin
set @VehicleStateType_ID=1 

end
SELECT @VehicleOrder_ID= max(VehicleOrder_ID)  FROM EMTinCar WHERE VehicleStateType_ID=@VehicleStateType_ID
IF(@VehicleOrder_ID is null)
begin
set @VehicleOrder_ID=0
end

set @VehicleOrder_ID=@VehicleOrder_ID+1

--修改之前把自己保存起来
select @VehicleStateType_IDOld= VehicleStateType_ID from deleted where ID=@ID

select @VehicleOrderOld=VehicleOrder_ID from deleted  where ID=@ID ;

update EMTinCar set VehicleStateType_ID=@VehicleStateType_ID,VehicleOrder_ID=@VehicleOrder_ID where ID=@ID



--自己的排序,获取更新之前所在的数据
declare  Oldorder_cursor  cursor scroll for   

select ID ,VehicleOrder_ID from EMTinCar where VehicleStateType_ID=@VehicleStateType_IDOld and VehicleOrder_ID>=@VehicleOrderOld order BY VehicleOrder_ID asc

open Oldorder_cursor

fetch First from Oldorder_cursor into @ID ,@VehicleOrder_ID  

WHILE @@fetch_status=0   

BEGIN

IF @VehicleStateType_IDOld!=@VehicleStateType_ID --


Update EMTinCar Set VehicleOrder_ID=@VehicleOrder_ID-1 Where ID=@ID


if @VehicleOrder_ID<=0

set @VehicleOrder_ID=1

fetch next from Oldorder_cursor into @ID ,@VehicleOrder_ID     

end

CLOSE Oldorder_cursor  

DEALLOCATE Oldorder_cursor
  
end


GO


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值