有没有办法使用select语句生成postgres-comment?

时间:2015-02-13 14:05:51

标签: sql postgresql select comments

有没有办法通过使用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

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