Эквивалентно `pg_rules` в`information_schema`

Я знаю, information_schema является стандартом SQL, и RULES являются расширениями Postgres SQL

Тем не менее, есть ли способ перечислить все доступные правила, используя information_schema?

2 ответа

Решение

Нет, согласно документации:

Однако представления информационной схемы не содержат информации о специфических для PostgreSQL функциях; чтобы узнать о них, вам нужно запросить системные каталоги или другие специфичные для PostgreSQL представления.

Пожалуйста, попробуй

SELECT
  n.nspname                   AS view_schema,
  c.relname                   AS view_name,
  r.rulename                  AS rule_name,
  pg_get_ruledef(r.oid, true) AS compiled_definition,
  d.description               AS full_description,
  CASE ev_type::integer
      WHEN 2 THEN 'update'
      WHEN 3 THEN 'insert'
      WHEN 4 THEN 'delete'
  END AS rule_event

FROM
  pg_rewrite AS r
  LEFT JOIN pg_class AS c ON c.oid = r.ev_class
  LEFT JOIN pg_namespace AS n ON n.oid = c.relnamespace
  LEFT JOIN pg_description AS d ON r.oid = d.objoid
WHERE TRUE
AND n.nspname != 'pg_catalog'
AND r.rulename <> '_RETURN' AND relkind = 'v'
ORDER BY r.rulename
Другие вопросы по тегам