定期检查数据库中的更改

时间:2013-09-20 05:22:15

标签: c# .net oracle email

我在Oracle数据库中有一个表( tbl_mark6_trainee )。此表格中有一个名为“ status ”的字段。每次用户在我的应用程序上注册自己时,都会在此表中创建一个新行,其中“status”的默认值设置为“ Incomplete ”。

我正在创建的Web应用程序必须通过电子邮件发送此应用程序的管理员,如果此字段的值(“状态”)未在 7 天的新用户在此网站上注册。

我正在使用的技术是C#.net。

我已经处理了电子邮件位。如何在没有任何人为干预的情况下每7天检查一次该字段的状态?

3 个答案:

答案 0 :(得分:0)

您可以编写一个控制台应用程序来执行检查并调用电子邮件发送脚本。将其添加到scheuduled tasks / chron作业并使其每7天执行一次。

OR

我从未使用过oracle,但也许它可以做一个chron工作并自己调用一些应用程序或脚本?

答案 1 :(得分:0)

为了确定七天内没有发生的事情,添加行的原始日期必须存储在某处。我会在此表中添加另一列,通过修改添加此行的代码来存储此日期。另一种可能性是添加一个插入触发器来将列存储在数据库层。

在任何情况下,一旦您存储了原始创建日期,查询将类似于

select * 
  from table_name 
 where created_date < sysdate - 7 
   and status = 'Incomplete';

将为您提供超过7天前创建的项目,状态仍然不完整。然后,您可以定期(例如每个午夜)使用其他进程运行此查询,以查找未完成的注册并向合适的人发送电子邮件。

答案 2 :(得分:0)

完整的数据库方法

您可以创建一个过程,该过程将在7天内通过查询检查成员没有变化。 utl_mail 发送电子邮件。

使用 dbms_job dbms_schedule 每天在特定时间启动它。

db和前端的组合

编写程序以返回过去7天内未更改状态的成员列表。

来自程序的成员列表在前端捕获并发送电子邮件。

在7天内查询状态无变化很简单。

select * from table where status ='INCOMPLETE'且date&lt; = sysdate-7;