| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2253 人关注过本帖
标题:菜鸟求助,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
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册: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
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册: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: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:995
专家分:4966
注 册:2013-2-16
收藏
得分:10 
这个在我们这里常见,一般的解决办法是做一个计划任务,一般放在每个周末运行,用  where datediff(day,dt,getdate()) > ? 这个条件就可以了。这样也可以不必再整触发器了。
2017-04-25 14:41
快速回复:菜鸟求助,SQL 2000数据库表中新的数据插入后,删除1年前旧的数据,如 ...
数据加载中...
 
   



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

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