【问题标题】:Detect time of last change on a Microsoft Access database table检测 Microsoft Access 数据库表的最后更改时间
【发布时间】:2009-05-29 16:25:28
【问题描述】:

有没有人知道一种方法来检测 Microsoft Access 表上次更改(插入或更新)的时间?我们通过 ADO COM 使用 OLEDB 以编程方式与访问数据库进行通信,并正在寻找一种检测特定表更改的方法。我们不需要知道这些变化是什么,只需知道发生了哪些变化。

【问题讨论】:

    标签: ms-access oledb ado


    【解决方案1】:

    检测表中数据是否已更改的唯一方法是对表执行查询。

    您必须将DATETIME 类型的列添加到表中,例如命名为LastUpdatedDate,表示每行的最后更新日期/时间。设为NOT NULL,这样您就必须为每个INSERTUPDATE 在该列写入更新的DATETIME 值。此外,将该列设置为当前日期戳的默认值为 DATE() 或当前日期/时间戳的默认值为 NOW()。然后添加验证规则或CHECK 约束,例如CHECK (LastUpdatedDate = NOW()) 以确保在每个 UPDATEINSERT 上实际更新列。

    最后,运行MAX(LastUpdatedDate) 查询,你会得到你需要的。

    【讨论】:

      【解决方案2】:

      每次访问表时都必须“手动”写入列。

      【讨论】:

        【解决方案3】:

        正如其他人所指出的,如果不自己编写代码,就无法跟踪更改。

        有一个简单的例子 ACC2000:如何在表单中创建记录更改的审计跟踪 http://support.microsoft.com/default.aspx?scid=kb;en-us;Q197592

        审计跟踪 - 在记录级别记录更改: http://allenbrowne.com/AppAudit.html 本文介绍了表单和子表单的编辑、插入和删除。

        模块:维护变更历史 http://www.mvps.org/access/modules/mdl0021.htm 历史表例程旨在写入历史记录,以跟踪对一个或多个表中的字段所做的更改。

        【讨论】:

        • 如果他们通过 ADO COM 使用 OLEDB 以编程方式与访问数据库通信,我认为这些都不会起作用。
        【解决方案4】:

        您需要在表中实现时间戳列,并在数据更改期间更新值。

        【讨论】:

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