表 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 存储过程名称。 再设置一下定时执行的时间。