数库据写一个存储过程删除当前日期大于日期字段的数据,在数据库建立定时任务调用该存储过程,多长时间调用自己设
删除记录简单,关键你是什么个应用场景?
不一定需要定时自动删除,只需在你访问之前删掉就可以了,而且最好别乱删,万一系统时间出问题了。。。。
楼上说的都非常的正确,我觉得也可以增加一个定时器的功能,当时间过期了系统会自动调用那段删除的代码,这样也是可行的。
写一个数据库job,每天凌晨(系统空闲时间)执行,自动清理该日期前的数据,这里建议不要物理删除,最好放入另一个表中,或标记为已删除
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标识符。
oracle 里有一个dbms_job的工具,通过他可以设置你定时任务