2017-06-06 440 views
2

当我从复杂的查询创建视图时,我需要保留在SQL查询中添加的注释,以便更轻松地返回视图定义。在pgAdminIII中,当我创建一个视图然后查看视图定义时,注释被删除并且缩进完全修改...有没有办法改变这种行为?如何在PostgreSQL的视图定义中保留注释?

视图创建:创建后

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; 

感谢您的帮助!

回答

2

不,Postgres将视图保存为解析树,所以它不记得空白或注释。

但是,如果您真的需要functions可以记住评论。

+0

感谢@Joseph李和@klin!我想知道这是怎么发生的......我已经知道'COMMENT ON ...'语句,但它不会将注释保留在代码中。无论如何,我会用这个解决方案来完成这项工作。 – wiltomap

2

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';