Database design 触发器使用的函数的依赖关系?

Database design 触发器使用的函数的依赖关系?,database-design,postgresql,dependencies,Database Design,Postgresql,Dependencies,我有一个Postgres数据库,它存储系统收集的所有信息,然后是一个名为playback的模式,其中包含公共模式中包含的一小部分表。此播放模式是使用一个自动脚本创建的,该脚本在模式中提供了所需的几个视图/表,然后它会查找所依赖的所有表并在模式中创建它们。(显示如何检索依赖项) 其中一些表目前使用规则自动填充,这意味着pg_depends表中有一个条目可以查询。我们目前正在将其中一些规则转换为调用函数的触发器,因为当大块数据被复制到回放模式中时,currval(“some_sequence”)无法

我有一个Postgres数据库,它存储系统收集的所有信息,然后是一个名为playback的模式,其中包含公共模式中包含的一小部分表。此播放模式是使用一个自动脚本创建的,该脚本在模式中提供了所需的几个视图/表,然后它会查找所依赖的所有表并在模式中创建它们。(显示如何检索依赖项)

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


不幸的是,这意味着pg_dependens中不再有条目,创建模式的自动脚本遗漏了一些表。我有没有办法从函数/触发器中检索类似的依赖信息?或者通常有更好的方法来实现这一点吗?

那么您正在寻找一种方法来获取触发器使用的函数

SELECT tgfoid FROM pg_trigger WHERE oid = %u

等等。这取决于您有哪些可用信息


pg_depend

中也有关于此的记录,所以您正在寻找一种方法来获取触发器使用的函数

SELECT tgfoid FROM pg_trigger WHERE oid = %u

等等。这取决于您有哪些可用信息


pg_depend

中也有关于此的记录,因此您想知道触发器调用的函数中使用了哪些表。那是不可能的。有关原因,请参见下面的“停止问题”。在当前版本中,PostgreSQL不会尝试跟踪这一点,即使在某些情况下可能会这样做(我想到了语言SQL函数,但无论如何都不能用它编写触发器)。事实上,使用函数是半官方推荐的绕过依赖系统的方法


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

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


在你的申请中,您可能应该自己寻找跟踪这些依赖关系的方法。

我实际上在寻找触发器调用的函数中使用的表。我实际上在寻找触发器调用的函数中使用的表。我在PL\pgSQL中编写函数,不幸的是,没有提取来自生成函数的信息,但我想我会想出另一种解决方案来跟踪数据库外部的信息。我正在用PL\pgSQL编写函数,不幸的是,没有一种机制可以从生成的函数中提取信息,但我想我会想出另一个解决方案来跟踪数据库外部的信息。