有没有办法通过使用select语句生成注释文本(或以其他方式动态生成它)?
背景:
我有一个相当大的查询存储在表table_a中以便重用它。在表的注释中,我已经存储了创建日期(以及数据状态的日期)。我使用DbVisualizer(DbVisualizer-Variables)::
的功能生成的这个日期comment on table table_a is 'Date: ${dbvis-date}$'
现在我使用这个table_a来计算某些东西并将其存储在table table_b中。
我现在想把table_a的注释作为table_b的注释。 评论可以按How to retrieve the comment of a PostgreSQL database?:
中的描述获得select description from pg_description
join pg_class on pg_description.objoid = pg_class.oid
where relname = 'table_a'
所以,如果我可以在comment
中使用select语句,这将是一件容易的事情 - 但显然它是不允许的......
--doesn't work
comment on 'table_b' is (select description from pg_description
join pg_class on pg_description.objoid = pg_class.oid
where relname = 'table_a')
我使用Postgresql 9.1
答案 0 :(得分:2)
您可以在anonymous block内使用EXECUTE
:
DO
$$
DECLARE
comment_text text;
BEGIN
comment_text := (
select description
from pg_description
join pg_class on pg_description.objoid = pg_class.oid
where relname = 'table_a');
EXECUTE('COMMENT ON TABLE table_b IS ''' || comment_text || '''');
END;
$$;