在 MS Access 中触发

Posted

技术标签:

【中文标题】在 MS Access 中触发【英文标题】:Trigger in MS Access 【发布时间】:2011-06-15 08:27:03 【问题描述】:

我可以像在 SQL Server 等其他数据库中一样在 MS Access 中插入触发器吗?

【问题讨论】:

是的。但是,如果您可以使用 SQL Server 来存储您的数据和 ms 访问作为前端......那么更好 【参考方案1】:

您使用的是 Access 2010 吗?如果是这样,你可以使用Access 2010 data macros*,否则你就倒霉了。


Access 2010 数据宏(类似于触发器)

访问团队于 8 月 13 日发布

上周我们概述了 Access 2010 宏的改进 设计器、参数支持和 IntelliSense。这些改进 基于 Access 2007 宏沙箱的宏改进,嵌入 宏、TempVars、调试和对错误处理的支持。

宏的下一步自然是为业务提供模型 规则。数据宏允许开发人员将逻辑附加到记录/表格 事件(类似于 SQL 触发器)。这意味着您将逻辑写在一个 地方和更新这些表的所有表格和代码都继承了 逻辑。以下是一些典型的数据宏场景 捐赠管理数据库:

【讨论】:

值得注意的是,数据宏不会在拆分数据库中触发。【参考方案2】:

简单地说,Access VBA 子例程/函数就像存储过程对于 SQL Server、触发器对于 mysql、过程函数对于 PostgreSQL。同样,查询将对应于视图。

话虽如此,请注意 Access VBA 配备了完整的 Jet SQL 语言。您可以使用逻辑例程中的参数动态创建表、更新、追加、生成表、创建查询、创建记录集。从某种意义上说,您根本不需要使用功能区来创建或管理您的数据库。此外,存储查询甚至可以直接在其脚本中使用 VBA 函数:SELECT table1.A, table1.B, somefunction() from table1

挑战是将您的服务器触发事件​​转换为用户触发事件。本质上,用户必须对表进行更新、查询运行等操作。因此,如果您使用一些用户添加/更新的值来表达您的事件,您可以编写 VBA 函数脚本以在特定表或多个表上运行例程。

【讨论】:

【参考方案3】:

您可以在表单上放置一个 OnTimer 事件,并让它在给定的时间或间隔启动宏或模块。这适用于所有版本的 Access 回到 A95。

【讨论】:

【参考方案4】:

这个问题已经回答了。 MS Access 数据库与服务器数据库不同,它没有触发器、存储过程或包。但是,有一些方法可以解决这个问题,如果您想在对数据库执行插入、更新或删除操作时收到通知,那么您可以通过 VBA 代码添加选择查询。或者,如果需要,您可以将过程添加到带有时间、更改类型和值的审计表中。

Access 2007 triggers and procedures equivalents?

您可以拥有一个 MS Access 前端并使用一个 MS SQL Server 后端,但对某些人来说,这可能是作弊。但是您可以使用 VBA 代码来更改值并在表上使用一些查询。

【讨论】:

【参考方案5】:

虽然在 ms 访问中没有像 sql server 这样的触发器,但您有创造性的选择。一种是设置允许/限制某些数据的表格属性格式。另一个是当用户即将(在更新事件之前)将数据从接口发送到表时触发更新查询。当然,也有使用 ms access 作为连接到客户端服务器数据库的前端,而不是 ms access 的平面文件系统(oracle 和 sql server 是 access 前端的常见后端)。祝你好运。

【讨论】:

以上是关于在 MS Access 中触发的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 验证规则未在子表单中触发

MS Access 停止触发 Form_Open 事件

Access 2013:我可以使用数据宏触发 MS SQL SP 而不延迟 Access 中的执行吗?

MS Access 选项卡式表单多个 OnCurrent 触发

模块中的 MS Access 2013 事件触发器,而不是类模块

如何强制 MS-Access 自动刷新由具有外部非 MSAccess 数据库后端的触发器修改的记录?