Postgres 在 DML 触发器中查找哪些表被修改
Postgres find which tables are modified in DML trigger
我有数百个跨多个模式的 DML 触发器。他们中的大多数修改了一个以上的DML table。
使用 information_schema.triggers 和 pg_trigger tables 我能够单独找到触发器列表和触发事件 tables。
是否可以获取每个触发器修改的table列表(触发器目标tables)?
否,因为触发器操作是一个函数,并且函数以纯字符串形式存储在 pg_proc
系统目录 table 的 prosrc
列中 table。
您可以对该列中的 table 名称执行不区分大小写的搜索,但您将得出误报(如果使用动态 SQL,则有几个误报底片也是)。
我有数百个跨多个模式的 DML 触发器。他们中的大多数修改了一个以上的DML table。
使用 information_schema.triggers 和 pg_trigger tables 我能够单独找到触发器列表和触发事件 tables。
是否可以获取每个触发器修改的table列表(触发器目标tables)?
否,因为触发器操作是一个函数,并且函数以纯字符串形式存储在 pg_proc
系统目录 table 的 prosrc
列中 table。
您可以对该列中的 table 名称执行不区分大小写的搜索,但您将得出误报(如果使用动态 SQL,则有几个误报底片也是)。