Я использую полезный псевдоним (façade) для obj_description
, который прост в использовании, потому что имя таблицы *1003* (relname
) является varchar и может быть выражено через отдельное поле для имя схемы , как в основных таблицах и запросах.
CREATE FUNCTION rel_description(
p_relname varchar, p_schemaname varchar DEFAULT NULL
) RETURNS text AS $f$
SELECT obj_description((CASE
WHEN strpos($1, '.')>0 THEN $1
WHEN $2 IS NULL THEN 'public.'||$1
ELSE $2||'.'||$1
END)::regclass, 'pg_class');
$f$ LANGUAGE SQL;
-- EXAMPLES OF USE:
-- SELECT rel_description('mytable');
-- SELECT rel_description('public.mytable');
-- SELECT rel_description('otherschema.mytable');
-- SELECT rel_description('mytable', 'otherschema');
-- PS: rel_description('public.mytable', 'otherschema') is a syntax error,
-- but not generates exception: returns the same as ('public.mytable')
ПРИМЕЧАНИЯ:
Комментарий создается с именем таблицы , а не с OID ... "Как получить комментарий с именем таблицы ?"
SELECT obj_description ('schemaName.tableName' :: regclass, 'pg_class');
о obj_description только с object_oid (напр. 393862), obj_description(393862)
, устарело , правильное значение
SELECT obj_description (393862, 'pg_class');
В соответствии с рекомендациями этого ответа : " Если вы хотите знать, какие запросы запускает psql, когда вы используете клиентов \ dt + или \ d +, просто запустите его с помощью psql -E
».
PS: спасибо @ a_horse_with_no_name.