0

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

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

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

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

4

3 回答 3

0

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

无论如何,一旦您存储了原始创建日期,查询将类似于

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

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

于 2013-09-20T05:28:57.327 回答
0

完整的数据库方法

您可以创建一个程序,在查询的帮助下检查 7 天内没有变化的成员。和utl_mail发送电子邮件。

并使用dbms_jobdbms_schedule在每天的特定时间启动它。

db和前端的结合

编写一个程序以返回最近 7 天内未更改状态的成员列表。

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

查询 7 天内没有状态变化很简单。

select * from table where status = 'INCOMPLETE' and date <=sysdate-7;

于 2013-09-20T06:05:43.893 回答
0

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

或者

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

于 2013-09-20T05:25:45.367 回答