tsmsbs项目中用到的触发器和存储过程

系统 1545 0
代码
-- 触发器
create   trigger  tg_cranedata  on  dbo.CraneData
for   insert
as
begin
  
declare   @id   int , @craneid   int , @acttime   datetime , @height   int , @range   int , @weight   int , @moment   real , @hoistspeed   real , @rangespeed   real
  
declare   @xacttime   datetime , @xheight   int , @xrange   int
  
declare   @xtime   int
  
select   @id = id, @craneid = craneid, @acttime = acttime, @height = height, @range = range, @weight = weight  from  inserted
  
select   @xacttime = acttime, @xheight = height, @xrange = range  from  cranedata  where  id = ( select   top   1  id  from  cranedata  where  craneid = @craneid   and  id < @id   order   by  id  desc )
  
set   @moment = @range * @weight * 9.8 / 100000
  
set   @xtime = datediff (s, @xacttime , @acttime )
  
if   @xtime < 10   and   @xtime > 0
  
begin  
    
set   @hoistspeed = ( @height - @xheight ) / @xtime
    
set   @rangespeed = ( @range - @xrange ) / @xtime
    
update  cranedata  set  moment = @moment ,hoistspeed = @hoistspeed ,rangespeed = @rangespeed   where  id = @id
  
end
  
else
  
begin
    
update  cranedata  set  moment = @moment ,hoistspeed = 0 ,rangespeed = 0   where  id = @id
  
end
end


-- 存储过程
create   proc  CutCraneData
as

drop   trigger  tg_cranedata

declare   @postfix   varchar ( 20 )
declare   @newname   varchar ( 20 )
select   @postfix = convert ( varchar , getdate (), 112 )
select   @newname = ' CraneData ' + @postfix

EXEC  SP_RENAME  ' CraneData ' , @newname

CREATE   TABLE   [ dbo ] . [ CraneData ]  (
    
[ Id ]   [ int ]   IDENTITY  ( 1 1 NOT   NULL  ,
    
[ CraneID ]   [ int ]   NULL  ,
    
[ ActTime ]   [ datetime ]   NULL  ,
    
[ ActMillisecond ]   [ int ]   NULL  ,
    
[ Height ]   [ real ]   NULL  ,
    
[ Range ]   [ real ]   NULL  ,
    
[ SlewRange ]   [ int ]   NULL  ,
    
[ Weight ]   [ int ]   NULL  ,
    
[ Moment ]   [ real ]   NULL  ,
    
[ HoistSpeed ]   [ real ]   NULL  ,
    
[ RangeSpeed ]   [ real ]   NULL  ,
    
[ IsOverRun ]   [ tinyint ]   NULL  
ON   [ PRIMARY ]

declare   @sqlCreateTrigger   nvarchar ( 1500 )
set   @sqlCreateTrigger = N ' create  trigger tg_cranedata on dbo.CraneData
for insert
as
begin
  declare @id int,@craneid int,@acttime datetime,@height int,@range int,@weight int,@moment real,@hoistspeed real,@rangespeed real
  declare @xacttime datetime,@xheight int,@xrange int
  declare @xtime int
  select @id=id,@craneid=craneid,@acttime=acttime,@height=height,@range=range,@weight=weight from inserted
  select @xacttime=acttime,@xheight=height,@xrange=range from cranedata where id=(select top 1 id from cranedata where craneid=@craneid and id<@id order by id desc)
  set @moment=@range*@weight*9.8/100000
  set @xtime=datediff(s,@xacttime,@acttime)
  if @xtime<10 and @xtime>0
  begin 
    set @hoistspeed=(@height-@xheight)/@xtime
    set @rangespeed=(@range-@xrange)/@xtime
    update cranedata set moment=@moment,hoistspeed=@hoistspeed,rangespeed=@rangespeed where id=@id
  end
  else
  begin
    update cranedata set moment=@moment,hoistspeed=0,rangespeed=0 where id=@id
  end
end
'

EXEC ( @sqlCreateTrigger )

 

tsmsbs项目中用到的触发器和存储过程


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论