database-design - 触发器使用的函数的依赖性?

标签 database-design postgresql dependencies

我有一个 Postgres 数据库,它存储我们系统收集的所有信息,然后是一个称为回放的模式,其中包含公共(public)模式中包含的一小部分表。这个回放模式是使用一个自动脚本创建的,该脚本在模式中提供了一些需要的 View /表,然后它找到所有依赖的表并在模式中创建它们。 (This answer 展示了我如何检索依​​赖项)

其中一些表当前使用规则自动填充,这意味着 pg_depends 表中有一个条目可以查询。我们目前正在将其中一些规则转换为调用函数的触发器,因为当将大块数据复制到回放模式中时,currval('some_sequence') 无法正常工作。 (This answer 也建议这是正确的做法)

不幸的是,这意味着 pg_depends 中不再有条目,创建模式的自动化脚本遗漏了一些表。有没有办法让我从函数/触发器中检索类似的依赖信息?还是一般情况下有更好的方法来做到这一点?

最佳答案

所以您想知道触发器调用的函数中使用了哪些表。那是不可能的。原因请参见停机问题。在当前版本中,PostgreSQL 不会尝试跟踪这一点,即使在某些情况下它可能是可能的(想到语言 SQL 函数,但无论如何你不能在其中编写触发器)。事实上,半官方推荐使用函数作为绕过依赖系统的方法。

在您的应用程序中,您可能应该自己寻找一种方法来跟踪这些依赖关系。

关于database-design - 触发器使用的函数的依赖性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4996867/

相关文章:

sql - UPDATE ON CONFLICT 查询时发生 NOT NULL 约束冲突

mysql - MySQL 中的产品和订单表结构

mysql - MySQL如何为数据库中的所有表生成DDL

sql - SQL中的迭代函数,postgres

database - postgres 为连接存储什么信息

scala - spark-core 依赖项中的冲突。它是如何工作的?

java - common.annotations.Beta 的 TransformException 重复条目

database - 如何处理单个数据库的不同组织?

python - 在数据库中存储多个 excel 文件的有效方法?

javascript - 打破 JavaScript 中的依赖关系