我有一个在后端使用postgres数据库的项目,我正在创建一个Dockerfile,它可以自动设置数据库的本地开发示例。数据库包括大量函数,这些函数过去一直存储在上下文适当的sql文件中,例如users.sql、companies.sql。这一直很好,因为无论何时进行更改,我可以简单地执行相关的sql文件,其中REPLACE
所有视图和删除/重新创建所有函数。
然而,当尝试在一个新的postgres示例上运行这些脚本时(在CREATE
ing所有表之后),它们会失败,因为大多数视图/函数引用了其他尚未定义的视图函数。
我已经开始调查是否有一个特定的顺序,我可以运行脚本,以避免这个问题,但由于他们没有设计的目的,这可能是不可能的,并有大量的实体在发挥作用,所以这很可能是一个不平凡的任务。
除了重组脚本之外,还有什么方法可以实现这一点?
1条答案
按热度按时间blmhpbnm1#
您可以编写一个简单的递归查询,从所有不依赖于其他视图的视图开始,递归地添加依赖于这些视图的视图。然后按正确的顺序输出这些视图的视图定义,您就得到了脚本: