没有显式数据库名称的当前数据库上的ALTER DATABASE?

Kub*_*uba 10 sql postgresql

我希望能够编写更改数据库的sql查询,以便我当前登录.

例:

$ psql my_db
psql(9.1.1)
my_db=> ALTER DATABASE my_db SET some_variable = '0';
                       ^^^^^
Run Code Online (Sandbox Code Playgroud)

有没有办法避免在此查询中指定数据库名称?

a_h*_*ame 18

现在无法测试,但是因为你在9.1,你可能会尝试:

DO $$
BEGIN
   execute 'alter database '||current_database()||' set some_var = ''0''';
END;
$$
Run Code Online (Sandbox Code Playgroud)

也许您需要将current_database()选择为变量才能使其正常工作.


A.H*_*.H. 9

如果您正在执行脚本,则psql可以使用以下替换机制psql:

alter database :DBNAME SET ...
Run Code Online (Sandbox Code Playgroud)

文档在这里:http://www.postgresql.org/docs/current/interactive/app-psql.html#APP-PSQL-VARIABLES