PostgreSQL:如何查看存在哪些 table 规则
PostgreSQL: how to see which table RULEs exists
我们在表上使用 RULEs
而不是 TRIGGER 来进行审计。
有没有办法查看存在哪些规则(也许information_schema
)?
另外,我可以看看规则的来源吗?也许类似于 pg_proc
。
这存储在pg_rewrite
您可以使用这样的查询来为 public
架构中的所有表制定规则:
select r.rulename,
c.relname as rule_table,
case r.ev_type
when '1' then 'SELECT'
when '2' then 'UPDATE'
when '3' then 'INSERT'
when '4' then 'DELETE'
end as rule_event,
pg_catalog.pg_get_ruledef(r.oid, true) as definition
from pg_catalog.pg_rewrite r
join pg_catalog.pg_class c on r.ev_class = c.oid
where c.relnamespace = 'public'::regnamespace
and r.rulename <> '_RETURN';
r.rulename <> '_RETURN'
排除了为视图创建的规则。
我们在表上使用 RULEs
而不是 TRIGGER 来进行审计。
有没有办法查看存在哪些规则(也许information_schema
)?
另外,我可以看看规则的来源吗?也许类似于 pg_proc
。
这存储在pg_rewrite
您可以使用这样的查询来为 public
架构中的所有表制定规则:
select r.rulename,
c.relname as rule_table,
case r.ev_type
when '1' then 'SELECT'
when '2' then 'UPDATE'
when '3' then 'INSERT'
when '4' then 'DELETE'
end as rule_event,
pg_catalog.pg_get_ruledef(r.oid, true) as definition
from pg_catalog.pg_rewrite r
join pg_catalog.pg_class c on r.ev_class = c.oid
where c.relnamespace = 'public'::regnamespace
and r.rulename <> '_RETURN';
r.rulename <> '_RETURN'
排除了为视图创建的规则。