我希望能够编写更改数据库的sql查询,以便我当前登录。
示例:
$ psql my_db
psql(9.1.1)
my_db=> ALTER DATABASE my_db SET some_variable = '0';
^^^^^
有没有办法避免在此查询中指定数据库名称?
答案 0 :(得分:17)
目前无法测试,但由于您使用的是9.1,您可以尝试:
DO $$
BEGIN
execute 'alter database '||current_database()||' set some_var = ''0''';
END;
$$
也许您需要在变量中选择current_database()才能使其正常工作。
答案 1 :(得分:8)
如果您在psql
中执行脚本,则可以使用psql
的替换机制:
alter database :DBNAME SET ...
文档在这里:http://www.postgresql.org/docs/current/interactive/app-psql.html#APP-PSQL-VARIABLES
答案 2 :(得分:1)
将几件事结合在一起,包括以前的答案和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';