【发布时间】:2012-04-17 14:22:59
【问题描述】:
我有一个 Access 数据库,其中包含许多表和数千条记录,如果有人更改其中的任何数据、任何行,甚至只是一个单元格,是否有任何方法可以了解特定的行或单元格有什么在 Access 数据库中更改了任何属性还是应该使用任何触发器?
【问题讨论】:
-
我相信触发器出现在 2010 年。因此,您唯一的选择是手动比较新旧(beforePost 事件?)。说用触发器来做这件事也不是特别聪明。在任何地方进行任何更改,无论是否访问,都将很快在一个重要的系统上积累大量数据。你想解决什么问题,横向思考时间。
-
实际上主要是如果编辑任何特定行,而不是上传整个数据库,如果我只上传特定更改的行或表会很有帮助,以某种方式通过编辑行,可以你建议我这样做
-
一些 RDBMS 有“行更改时间戳”的概念,但我不知道访问是否支持本机。您可以在应用程序级别做一些事情,也许,以获得效果 - 然后,只需上传自上次更新以来的所有内容。但是,如果出现问题,交易可能会出现问题 - 您可能需要查看 ETL 工具。
-
我不建议使用副本数据库。我记得他们有些痛苦。
-
是的,时间戳属性可以在记录更改时更新。您可以使用 before change table 事件在引擎级别运行代码(您需要 a2010 来执行此操作)。事实上,如果应用程序不会被其他任何东西更新,那么您甚至可以记录当前登录的窗口用户名以及计算机工作站名称。因此,您可以记录网络用户名、计算机名和日期/时间。如果您没有 2010,则必须在更新事件之前将此类代码放在表单中。
标签: sql database ms-access ms-access-2007