读书人

50分 自动处理有关问题

发布时间: 2012-01-24 23:11:54 作者: rapoo

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

读书人网 >SQL Server

热点推荐