PostgreSQL使用CurrentDatabase设置变量

时间:2019-06-24 08:48:29

标签: postgresql

我正在尝试使用以下语法在HDB DATABASE下设置变量。

ALTER DATABASE HDB SET "abc.var1"='aaa';

但是我需要为此提供数据库名称。如果我想改用CURRENT数据库。

PostgreSQL中有一种方法实际上返回当前数据库名称: current_database(),但即使在下面的示例中,也不是有效的方法。

ALTER DATABASE current_database() SET "abc.var1"='aaa';

我该如何实现?

1 个答案:

答案 0 :(得分:1)

您需要为此使用动态SQL:

do
$$
begin
  execute format('alter database %I SET %I = %L', current_database(), 'abc.var1', 'aaa');
end;
$$

使用参数以及变量名和值的占位符%I%L可以避免在对format()的调用中嵌套引号,并正确处理引号。