首页 > 解决方案 > 是否有特定查询可以在 postgressql 中找到 trigger_owner 和 constraint_owner?

问题描述

例如:- 触发器名称可以从 pg_trigger 派生,但该触发器可以由具有访问权限并可以创建触发器的其他用户创建。constraint_name 的类似问题。对于表 emp( user_id varchar(20), emp_name varchar(20), emp_salary integer); 假设 user1 创建此表,user2 创建触发器和约束名称。那么有没有办法知道谁创建了触发器和约束名称,因为在 pg_trigger 表和 information_schema.columns 中,user1 将显示为 trigger_owner 和表所有者。

标签: sqlpostgresql

解决方案


触发器与 PostgreSQL 的权限系统无关,因此不需要记录触发器的创建者/所有者。这同样适用于表上的约束。过程/函数需要权限,以便 DBA 可以限制谁调用/运行该过程;触发器只是在对表进行更改时调用过程的东西(因此基本上任何对表具有写访问权限的人都应该有权触发触发器)。

虽然所有权实际上只与权限相关,但如果您想了解创建者以进行审计,我建议您使用%u标志log_line_prefix并设置log_statement = ddlorlog_statement = all以便您可以查看哪个用户创建了触发器/约束。


推荐阅读