为什么不能将Postgres中的COMMENT字符串连接起来?

时间:2019-12-11 03:57:38

标签: postgresql

我试图在几行中连接一个较长的注释,以保持我的代码整洁,但惊讶地发现我做不到。例如,以下代码在管道处返回语法错误:

COMMENT ON VIEW my_view IS 'foo' || 'bar';

评论有什么特别之处吗?

2 个答案:

答案 0 :(得分:2)

The documentation解释了该参数:

  

新注释,以字符串文字形式表示;或NULL删除评论。

因此,您不能在该位置只有一个常量。

幸运的是,SQL标准已将相邻的字符串文字串联在一起,因此您可以编写

COMMENT ON VIEW my_view IS 'foo'
   'bar';

答案 1 :(得分:2)

documentation指出仅允许文本,不允许使用表达式:

  

评论   {     访问方法object_name |     ...     查看object_name   }是“ 文本

请注意文本周围的引号。但您可以为此使用动态创建的语句:

DO $$                      
BEGIN
    EXECUTE FORMAT('COMMENT ON VIEW myview IS %L', 'A very long ' || 'comment');
END
$$ LANGUAGE PLPGSQL;