是否可以在没有 revinfo 外键的情况下手动创建 Envers 审计表?

Is it possible to manually create Envers auditing tables without the revinfo foreign key?

在我当前的项目中,我使用 Envers 5.2.12 来审核实体更改。由于安全限制,我必须手动创建 audit table 和 revinfo table,它们不能包含外键。如果我在没有外键引用的情况下创建它们,是否会干扰 Envers 的正常行为?

简而言之,Envers 将在没有定义外键的情况下工作。

这里的主要警告是,这一切都假设所维护的数据在相关行之间保持一致,就好像定义了外键一样。

如果在审计表中插入或删除审计数据,否则通常会使外键无效并生成约束违规异常,则所有保证都将失效。

外键的作用是保证相关行之间的数据完整性。没有它们,您将永远不会意识到某个操作何时违反了该指令,并且当您注意到该问题时,您的数据完整性可能会受到严重损害,最好从头开始。

虽然 Envers(通常来说大多数应用程序)可以在没有 FK 定义的情况下运行,但您应该使用它们,因为它们实际上是任何关系数据库环境中的基石原则。