日期:2014-05-19  浏览次数:20489 次

时间一到自动更新
有一个用户表A,根据用户注册时间一到24小时就把用户信息提交到用户表B,我想到用作业定期时间去数据表中轮询,但是每次轮询时间间隔又不能太短,那就造成有用户信息不能及时提交各位又没有解决的办法啊。
是不是触发器能解决呢?

------解决方案--------------------
用JOB应该没什么问题,JOB执行的最小粒度是一分钟一次。
------解决方案--------------------
DTS 应该可以解决
------解决方案--------------------
用DTS
------解决方案--------------------
job可以解決
------解决方案--------------------
根據你說的,我認為觸發器要好一點,如果job設定每分鐘執行一次的話,太頻繁了,會拖死
服務器,如果job設定時間長些執行的話,又不能及時更新表.

------解决方案--------------------
create trigger tri_insert on A
after insert
as
if exists(select 1 from A where datediff(dd,注冊時間,getdate())> =24)
begin
insert into B
select * from A
where datediff(dd,注冊時間,getdate())> =24

delete A
wheredatediff(dd,注冊時間,getdate())> =24
end

------解决方案--------------------
根据楼主的意思,用触发器就可以解决啦,不必用到job
当数据表a更新时,就触发更新到数据表b中
------解决方案--------------------
楼上的方法好象不行,如果插入一条记录后48小时之内都没有新记录插入的话,就不会触发。
个人认为还是要用作业。
------解决方案--------------------
大家說得對,考慮不周全
------解决方案--------------------
看下魚兄等高人有沒有好的辦法
------解决方案--------------------
用JOB是最好的啦,1分钟一次,我想你也没那么大的量,执行一次不会超过一分钟吧
对于“那就造成有用户信息不能及时提交”不太明白,已经精确到分钟了,难道要精确到毫秒吗,应该不至于吧
对于性能的话,储存过程比触发器要好

------解决方案--------------------
触发器不行的,最好是在用户注册时,同时产生一个JOB,让其24小时执行一次

如果对时间要求不是很强,可以写出个JOB每隔一定时间检查,把超过注册24小时的用户放到B表中去
------解决方案--------------------
用户注册时间一到24小时

看你这个如果每格一个小时执行一次Job就好,你还可以把注册时间24小时改为23小时
这样多几分钟和少几分钟别人也不会太在意

如果你用触发器,老实说触发器并不好控制的,在真的开发中触发器还是少用为好,
你要的功能Job完全能做到

至于用DTS,那可真是大才小用了,完全不值得
------解决方案--------------------
JOB也比较安全 呵呵。可以写成事务。
我们每天都是这么弄的!