如何使用变量或计算表达式在 PostgreSQL 中添加注释?

How to add comment in PostgreSQL using a variable or a computed expression?

我想在包含当前日期的纯 SQL 中对 PostgreSQL table my_data 添加评论。

我尝试使用连接运算符,但它不起作用:

COMMENT ON TABLE my_data
    IS 'Last update: ' || CURRENT_DATE::text;

我也尝试过使用变量,但我遇到了同样的问题:

DO $$
DECLARE comm text;
BEGIN
    SELECT 'Last update: ' || CURRENT_DATE::text INTO comm;
    COMMENT ON TABLE my_data IS comm;
END $$;

我在 PG documentation 中没有看到任何与我的问题相关的内容。有没有办法在纯 SQL 中实现它?

这已在 DB 堆栈交换中得到解答。 https://dba.stackexchange.com/questions/119291/how-to-create-a-dynamic-comment-to-an-object

create or replace function comment_on(p_type text, p_object text, 
p_comment text)
returns text
as
$$
declare 
  l_sql     text;
  l_comment text;
begin
  l_comment := replace(p_comment, '${created}', 'created at 
'||to_char(current_date, 'yyyy-mm-dd'));
  l_sql := 'comment on '||p_type||' '||p_object||' is 
'||quote_literal(l_comment);
  execute l_sql;
  return l_comment;
end;
$$
language plpgsql;

尝试使用匿名代码块。使用 format() 格式化您的 SQL 声明,然后 EXECUTE 它:

DO $$
BEGIN    
 EXECUTE format('COMMENT ON TABLE my_data IS %L','Last update: '||CURRENT_DATE);
END $$;