我正在使用SQLite中的一个项目,其中几个INSERT语句涉及递归的WITH语句。这些INSERT语句位于监视其他数据库上调用INSERT语句的触发器中。
我发现这会导致每次触发WITH语句时重新计算大量值,而不是在WITH语句中引入逻辑,只重新计算需要重新计算的值(这会产生蔓延和我很难维护),我宁愿采用WITH语句中定义的一些临时视图,并使它们成为缓存值的永久表。然后我链接触发器,以便table_1的更新导致table_2的更新,这导致table_3等的更新。这使代码更容易调试和维护。
问题在于,在项目中,我想明确区分用户可编辑的表和用于缓存中间值的表。实现此目的的一种方法是(或许)制作"缓存"表格只读EXCEPT通过某些触发器调用时。我在SQL的其他方言中看到了一些关于类似问题的问题,但没有任何与SQLite相关的问题,也没有解决这个问题,因此这是一个新问题。
任何帮助将不胜感激!