当我从复杂查询中创建视图时,我需要将注释保留在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不会持续评论。