эквивалентно `pg_rules` в` information_schema` - PullRequest
2 голосов
/ 22 мая 2011

Я знаю, information_schema - это стандарт SQL, а RULES - это расширения Postgres SQL.

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

Ответы [ 2 ]

3 голосов
/ 22 мая 2011

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

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

2 голосов
/ 18 февраля 2013

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

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
...