如果数据存在一小时,我需要清除表中的所有记录。 知道开始时间,我有一个列“StartTime”与“日期”数据类型。 我想我需要一个计时器来做到这一点,如何在oracle中使用定时器执行过程
我怎么能在oracle中做到这一点?
如果数据存在一小时,我需要清除表中的所有记录。 知道开始时间,我有一个列“StartTime”与“日期”数据类型。 我想我需要一个计时器来做到这一点,如何在oracle中使用定时器执行过程
我怎么能在oracle中做到这一点?
要求不是很清楚。
这是一个工作/计划,你必须运行一次,将删除存在超过一个小时的记录?如果是这样的话,你可以使用..
delete from <table_name>
where StartTime < (sysdate-1/24);
commit;
如果你需要不断清除记录,您将需要安排此为作业。频率取决于您希望删除记录的频率。
您试图解决什么商业案例?
对于哪个版本的Oracle?
对于版本v7.3.4到9i,请使用DBMS_JOB来安排任务。 10g +,你想用DBMS_SCHEDULER。我不清楚你多久需要/需要这个运行...
您可以创建计划的作业在Oracle 10g及以上使用DBMS_SCHEDULER
如果你真的很讲究,你可以安排这个工作 - 它要求你的过程 - 运行每隔1分钟,这样的数据将被清除出只要第60分钟过期。
参考this link对于如何设置/通过脚本在Oracle 10g调度作业为例
根据您的具体要求是什么,我可能会看看使用视图,只显示有效的行查询时。这会使得看起来只有最后一小时的记录可用。这也意味着你不需要在创建完成一小时后删除行。
然后要删除行,我会看看使用DBMS_JOB或DBMS_SCHEDULER删除行中的建议在其他一些答案。
请记住,仅仅因为您的要求是在一小时后清除表格中的行,您可能确实只需要移除查询它们的能力,您可以使用视图执行查询。
+1优秀的建议。有时用户说“1小时后记录被删除”,但他们真正的意思是“1小时后记录从不出现在屏幕上”。 – 2010-11-16 12:02:40