当前位置: 代码迷 >> Sql Server >> 50分 自动处理有关问题
  详细解决方案

50分 自动处理有关问题

热度:177   发布时间:2016-04-27 15:22:51.0
50分 自动处理问题
表     count  
countid       int
count           int
orderid       int
date             datetime
表     visit
visitid       int
visit_IP     nvarchar(50)
orderid       int
isfcounted         bit
表   orders
orderid       int
pid               int
uid               int
reg_time     datetime

我需要写一个   存储过程   或者   触发器
实现   经过一段设定的时间   或者是1天   或者n天   或者   n   月
自动计算出表   visit   中的   iscounted   为假的数量
然后在   count   表中添加一条记录记录刚才的数量
最后将   visit   表中的isconted   为‘假’的记录改为‘真’
整个这个过程数据库服务器自动完成

------解决方案--------------------
create proc test
as
begin
set nocount on
insert into count(count,date)
select count(1),getdate() from visit where isfcounted=0;

---更改 isfcounted
update visit set isfcounted=1 where isfcounted=0;

end


---然后添加一个job,定时执行存储过程
------解决方案--------------------
create proc pc
as
begin tran

declare @err1 int, @err2 int, @err3 int

declare @count int
select @count=count(*) from visit where isfcounted=0
set @err1=@@error

insert [count]([count], [date]) select isnull(@count, 0), getdate()
set @err2=@@error

update visit set isfcounted=1
where isfcounted=0
set @err3=@@error

if @err1=0 and @err2=0 and @err3=0
commit tran
else
rollback tran
go

--新建一个JOB,调用存储过程

------解决方案--------------------
job在Managment里的SQL Server Agent里面写就可以啊。

写 exec 存储过程名称。 再设置一下定时执行的时间。
  相关解决方案