首页新闻找找看学习计划

数据库有一个日期字段,怎么实现如果这个日期过期就自动清理掉这一条数据?

0
悬赏园豆:15 [待解决问题]

数据库有一个日期字段,怎么实现如果这个日期过期就自动清理掉这一条数据?

邵世铨的主页 邵世铨 | 初学一级 | 园豆:165
提问于:2016-04-21 13:28
< >
分享
所有回答(7)
0

数库据写一个存储过程删除当前日期大于日期字段的数据,在数据库建立定时任务调用该存储过程,多长时间调用自己设

Rich.T | 园豆:3438 (老鸟四级) | 2016-04-21 13:39
0

删除记录简单,关键你是什么个应用场景? 

不一定需要定时自动删除,只需在你访问之前删掉就可以了,而且最好别乱删,万一系统时间出问题了。。。。

waiter | 园豆:1000 (小虾三级) | 2016-04-21 13:51
0

楼上说的都非常的正确,我觉得也可以增加一个定时器的功能,当时间过期了系统会自动调用那段删除的代码,这样也是可行的。

墨瞋 | 园豆:477 (菜鸟二级) | 2016-04-21 13:57
0

写一个数据库job,每天凌晨(系统空闲时间)执行,自动清理该日期前的数据,这里建议不要物理删除,最好放入另一个表中,或标记为已删除

小光 | 园豆:1830 (小虾三级) | 2016-04-21 13:58
0

楼上的都对,顺带补充一下,最好记得执行这个任务前,备份整个数据库已经完成。要不随时GG。

c99 | 园豆:1838 (小虾三级) | 2016-04-21 15:56
0

create or replace procedure Proce_test --存储过程名
is
b1 date;
b2 date;
c1 int;
c2 int; --变量
begin
select 0 into c2 from dual;
select count(*) into c1 from test;
while c2 < c1 loop
c2 := c2+1;
select testdate into b1 from test where id = c2;
select sysdate into b2 from dual;
if b1 < b2
then
update test set state = 2 where id = c2;
end if;
end loop;
end;

 

建议不要删除数据库里的数据,我采用添加一列状态state标识符。

快乐开心每一天 | 园豆:202 (菜鸟二级) | 2016-05-09 17:12
0

oracle 里有一个dbms_job的工具,通过他可以设置你定时任务

毕来生 | 园豆:235 (菜鸟二级) | 2016-06-08 09:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册