如何使用变量或计算表达式在 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 $$;
我想在包含当前日期的纯 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 $$;