
--
觸發(fā)器
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 )
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 )
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
