标题:菜鸟求助,SQL 2000数据库表中新的数据插入后,删除1年前旧的数据,如何实现 ...
只看楼主
虎子8989
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-11-2
结帖率:0
已结贴  问题点数:20 回复次数:4 
菜鸟求助,SQL 2000数据库表中新的数据插入后,删除1年前旧的数据,如何实现
菜鸟求助,SQL 2000数据库表中新的数据插入后,删除1年前旧的数据,如何实现
搜索更多相关主题的帖子: 数据库表 如何 中新 
2017-04-18 11:21
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:10 
你这个思路不怎么好吧。
1、是每次插入1条数据后,就要删除1条记录?删除1年前的?
2、你表要有1个字段,记录插入记录时的日期。
2017-04-18 17:32
虎子8989
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-11-2
得分:0 
表中有时间字段,结构如下:

数据追加纪录到表里,数据保存为1年
2017-04-18 22:05
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
有2种方法:
1种是跑计划,定义1个计划job,让他每天运行1次。
2种是用触发器,当每次插入数据时,就触发。下面介绍触发器
-- 假设表名 tb,日期字段名 dt,
-- 假设数据库名 mytest
use mytest
go
-- 下面是建立1个触发器,当插入数据时,就删除比当前时间大365天的数据
create trigger [dbo].[tr_tb_auto_del]
on [dbo].[tb]
for insert
as
begin
   delete [dbo].[tb] where datediff(day,dt,getdate()) > 365
end
2017-04-19 09:06
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:10 
这个在我们这里常见,一般的解决办法是做一个计划任务,一般放在每个周末运行,用  where datediff(day,dt,getdate()) > ? 这个条件就可以了。这样也可以不必再整触发器了。
2017-04-25 14:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-476219-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.149660 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved