我想使用触发器实现审计日志,该触发器在创建、更改和删除的数据上触发以存储一些值。这些触发器应该能够使用进行更改并由 Web 应用程序管理的用户 ID。我对提供这些数据有一些想法,但我似乎并不完全理解触发器的执行上下文是什么。我已经阅读了 PostgreSQL 文档Overview of Trigger Behavior和其他内容,但我的问题似乎没有得到解答。
我想知道的是客户端会话与一个正在运行的事务与触发器执行之间的交互以及两者的生命周期以及它们如何相互依赖。据我了解,触发器是在数据库中独立于创建导致触发器执行的事件的客户端会话执行的。那是对的吗?这意味着触发器及其处理不会影响客户端请求的性能,并且客户端可以随时关闭会话。如果两者都是独立的,触发器将如何收到有关客户端回滚事务的通知,这在逻辑上意味着根本没有数据更改?还是触发器 onyl 在提交事务后执行,因为它们独立运行?
或者触发器是否在创建导致触发器执行的事件的客户端会话中异步执行?这意味着如果客户端出于任何原因关闭它的会话,触发器也会中止。它们的更改直接绑定到客户端事务,也可以回滚。
我需要了解行为才能知道我想在另一个问题中做什么。
感谢您的输入!