在我当前的项目中,我正在使用Envers 5.2.12审核实体更改。由于安全限制,我必须手动创建审计表和revinfo表,并且它们不能包含外键。如果我在没有外键引用的情况下创建它们,是否会干扰Envers的正常行为?
答案 0 :(得分:1)
简短的回答,Envers将在未定义任何外键的情况下工作。
这里的主要警告是,所有这些假设均假设所维护的数据在相关行之间保持一致,就像定义了外键一样。
如果从审计表中插入或删除了审计数据,否则通常会使外键无效并生成约束违例异常,则所有保证都将失效。
外键的目的是保证相关行之间的数据完整性。没有它们,您将永远不会知道何时有操作违反该指令,并且当您注意到问题时,数据完整性可能会受到严重损害,因此从头开始可能会更好。
虽然Envers(通常说大多数应用程序)可以在没有FK定义的情况下运行,但您应该使用它们,因为它们实际上是任何关系数据库环境中的基石。