【问题标题】:Detecting changes in database after regular intervals of time定期间隔后检测数据库中的更改
【发布时间】:2013-09-20 14:05:43
【问题描述】:

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

如果此字段(“状态”)的值在 7 天的新用户在此站点上注册。

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

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

【问题讨论】:

  • 如果我没听错的话,该表是否有插入日期和时间的列?如果是这样,您可以每天对
  • 是的。它有一个记录当前日期和时间的字段。但是,问题是我不希望管理员登录并触发查询。我只想通过电子邮件通知他。那么..如何确保应用程序每 7 天自动运行一次查询?

标签: c# .net oracle email


【解决方案1】:

完整的数据库方法

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

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

db与前端的结合

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

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

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

select * from table where status = 'INCOMPLETE' and date

【讨论】:

  • 是的,但我真正需要的是找到一种方法来做某事,以便每隔两天或每天午夜自动触发查询,无需任何人工干预。实现这一目标的简单方法是什么?
  • 我已经在答案中提到了这一点。在调度程序的帮助下从前端或后端调用查询或存储过程。在 oracle 中有 dbms_scheduler,在 unix 中有 cronjob,在 windows 中有 windows scheduler。
【解决方案2】:

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

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

【讨论】:

【解决方案3】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多