【问题标题】:ALTER DATABASE on a current db without explicit db name?ALTER DATABASE 在当前数据库上没有明确的数据库名称?
【发布时间】: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


    【解决方案1】:

    如果您使用的是 9.1,则可以使用:

    DO $$
    BEGIN
       execute 'alter database '||current_database()||' set some_var = ''0''';
    END
    $$;
    

    【讨论】:

      【解决方案2】:

      如果你在psql中执行脚本你可以使用psql的替换机制:

      alter database :DBNAME SET ...
      

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

      【讨论】:

        【解决方案3】:

        将一些东西结合在一起,包括以前的答案和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';
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-21
          • 2011-02-07
          • 1970-01-01
          • 2017-09-02
          • 2015-09-07
          • 1970-01-01
          • 2022-10-23
          相关资源
          最近更新 更多