【发布时间】:2012-02-17 15:53:28
【问题描述】:
我希望能够编写 sql 查询来更改我当前登录的数据库。
例子:
$ psql my_db
psql(9.1.1)
my_db=> ALTER DATABASE my_db SET some_variable = '0';
^^^^^
有没有办法避免在此查询中指定数据库名称?
【问题讨论】:
标签: sql postgresql
我希望能够编写 sql 查询来更改我当前登录的数据库。
例子:
$ psql my_db
psql(9.1.1)
my_db=> ALTER DATABASE my_db SET some_variable = '0';
^^^^^
有没有办法避免在此查询中指定数据库名称?
【问题讨论】:
标签: sql postgresql
如果您使用的是 9.1,则可以使用:
DO $$
BEGIN
execute 'alter database '||current_database()||' set some_var = ''0''';
END
$$;
【讨论】:
如果你在psql中执行脚本你可以使用psql的替换机制:
alter database :DBNAME SET ...
文档在这里:http://www.postgresql.org/docs/current/interactive/app-psql.html#APP-PSQL-VARIABLES
【讨论】:
将一些东西结合在一起,包括以前的答案和http://marxsoftware.blogspot.com/2015/08/postgresql-psql-variable-from-query.html中提到的“\gset”技术,最精简的方法是:
-- note no semicolon after \gset:
select current_database() \gset
alter database :current_database set some_var = '0';
【讨论】: