数据库开发中的宏操作、递归处理与打印视图优化
1. On Start 宏的使用注意事项
在使用 On Start 宏时,仅仅保存更改是不够的。当刷新运行时浏览器窗口,若要看到更改的效果,需要先关闭 On Start 宏编辑窗口,这样 Access 会同时保存应用主页视图页面,因为 On Start 宏与该视图相关联。
On Start 宏可将用户的显示名称和电子邮件地址保存到全局变量中,还能在消息框中显示这些值,用于测试。之后,可利用这些信息在应用程序中显示欢迎消息或用户可执行的操作。
不过,由于用户刷新浏览器页面时会执行 On Start 宏,所以通常不建议在应用中显示消息框。因为无法在未赋值的情况下测试全局变量是否有值,所以要假设用户刷新页面等同于首次访问该站点。
2. 事务与递归
递归是指代码在执行相同代码时,通过不同参数反复调用自身的过程。这是一种巧妙的编程技术,可编写简洁而强大的代码。下面将重点介绍递归在 Web 应用中的出现情况。
2.1 间接递归
若在表 A 上编写触发器,而表 B 上的触发器对表 A 中的数据进行更改,那么表 A 上的触发器将被执行,这种递归称为间接递归。
假设有表 A 和表 B,表 A 的插入事件会向表 B 写入数据,表 B 的插入触发器事件会向表 A 写入数据。当向表 A 插入记录时,会形成无限循环。Azure SQL 数据库可检测并停止此类问题,其递归限制为 32 层,超过该限制将返回错误。
如果尝试创建超过 32 层递归的测试,由于所有更改都包含在事务中,达到递归限制时所有更改会被回滚,因此在表中看不到任何更改的迹