如何使用PostgreSQL将评论保存在视图定义中



当我从复杂查询中创建视图时,我需要将注释保留在SQL查询中,以便更轻松地回到视图定义。在pgadminiii中,当我创建视图然后咨询视图定义时,评论将被删除并完全修订...是否有一种改变此行为的方法?

查看创建:

CREATE OR REPLACE VIEW public.v_test AS 
-- Count number of null lines within table 'test'
(SELECT * FROM public.test WHERE client IS NULL);

在创建后查看定义,如pgadminiii中显示:

-- View: v_test
-- DROP VIEW v_test;
CREATE OR REPLACE VIEW v_test AS 
 SELECT test.gid,
    test.client
   FROM test
  WHERE test.client IS NULL;
ALTER TABLE v_test
  OWNER TO postgres;

感谢您的帮助!

否,Postgres将视图保存为解析树,因此不记得空格或评论。

但是,如果您确实需要它,functions可以记住评论。

postgres没有像那样存储视图定义,因此您不能以这种方式存储评论。使用comment命令:

create view my_view as select 1;
comment on view my_view is 'It is my view';
select obj_description('my_view'::regclass);
 obj_description 
-----------------
 It is my view
(1 row)

您可以在pgadmin3中看到评论:

-- View: public.my_view
-- DROP VIEW public.my_view;
CREATE OR REPLACE VIEW public.my_view AS 
 SELECT 1;
ALTER TABLE public.my_view
  OWNER TO postgres;
COMMENT ON VIEW public.my_view
  IS 'it is my view';

另一个选项是创建一个晚期绑定视图。为此,创建视图时使用WITH NO SCHEMA BINDING。这可能对您的环境有影响,因此请在此处查看"无模式"绑定:创建查看文档

示例1:

CREATE VIEW test_1 AS
--selects the number 1
SELECT 1;

示例2:

CREATE VIEW test_2 AS
--selects the number 2
SELECT 2
WITH NO SCHEMA BINDING;

由于较晚的绑定,除其他外,示例2的评论在查看视图定义时将持续存在。示例1不会持续评论。

最新更新