我正在为CMS系统构建一个数据库,我已经不确定该走哪条路了,注意到所有的业务逻辑都在数据库层(我们使用PostgreSQL 13,应用程序计划成为SaaS):
1 -与他们相关联的应用程序文件夹和文档,所以如果我们移动一个文件夹(或一组文件夹散装)从它的父文件夹,该文件夹的权限,以及底层文件的权限必须遵循新位置(一个更新发送权限表),这是更好的执行通过一个语句触发后,还是我们需要迫使所有的代码调用一个方法来移动文件夹,文件和更新他们的权限。
2-不会更有意义有一个AFTER语句触发器而不是一个AFTER行触发器在所有情况下,因为他们做同样的事情,但与语句触发器你可以处理所有受影响的行批量(因此做得更有效),所以如果我是强制插入一个记录在另一个表中,如果更新或插入发生,它将有一个类似的性能为单行,但如果它们在语句级触发器中有1000行,则会快得多(因为我可以轻松地执行INSERT INTO ..)。SELECT * FORM new_table
您需要一个带有转换表的行级触发器或语句级触发器,这样您就可以知道哪些行受到语句的影响。为了避免重复,后者可能是更好的选择。
与其在移动对象时修改权限,不如在查询表时通过递归地跟踪包含链来确定权限。这里的问题是,您是希望在修改数据时还是在查询数据时做额外的工作。