postgresql - 获取调用某个函数的所有触发器
问题描述
因此,插入违反了约束,因为触发器在这种情况下不应该修改数据。
问题是,我已经禁用了我认为导致此问题的触发器,并且该函数仍然被调用。
如何最好地获得我缺少的触发器?
请注意,该函数是在触发器函数内调用的,因此
SELECT * FROM information_schema.triggers WHERE action_statement LIKE '%my_function%';
什么都不返回;
解决方案
要查找哪个触发器使用了某个触发器功能,请查询目录:
SELECT tgname,
tgrelid::regclass
FROM pg_trigger
WHERE tgfoid = 'my_trigger_function'::regproc;
如果你说的函数不是正确的触发函数,而是从触发函数调用的,事情就更难了。
由于c
和以外的语言中的函数internal
存储为字符串,因此 PostgreSQL 不跟踪函数之间的依赖关系。
所以在这种情况下你能做的最好的就是子字符串搜索:
SELECT oid::regprocedure
FROM pg_proc
WHERE prosrc ILIKE '%myfuncname%';
推荐阅读
- java - %_gpg_name 未使用 maven rpm 插件设置
- sql - SQL查询以获取第一个不同(给定)列值的所有值
- java - 我正在尝试将我的 Android 应用程序中的时间戳输入到 Firestore
- c# - 根据过滤器获取产品列表
- javascript - 有没有办法在 Firefox/chrome 的数字输入元素中告诉光标/插入符号的位置?
- batch-file - 在文件夹窗口批处理脚本中显示文件数量的替代方法
- html - 如何将视口元标记添加到 html 片段
- javascript - 使用 Javascript / jQuery 的弹出消息
- loops - VBA循环命名范围,在表中过滤并将结果复制到其他工作表
- arrays - 循环遍历数组时替换不起作用