当我从复杂查询创建视图时,我需要保留在 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';
WHERE 'Here it filters some columns on conditions' NOTNULL AND ...
对于 SELECT 中的计算,可以将其变为 1:
SELECT ('Here it calculates some column' NOTNULL)::integer * ...
所以我们最终会得到这样的结果:
SELECT ('Finding average column1 among column2' notnull)::integer *
SUM(column1)/count(distinct column2)
FROM table
WHERE 'Only records with dates in column3 older than 1 year' NOTNULL AND
column3 < now() - interval '1 year'
我不是一名熟练的数据库工程师,所以也许我目前看不到可能的影响。虽然很简单而且总比没有好,但我在互联网上没有找到任何类似的解决方案,所以我预计这个想法不会那么聪明和容易)
有什么想法吗?我将不胜感激)