ALTER DATABASE для текущей базы данных без явного имени базы данных? - PullRequest
10 голосов
/ 17 февраля 2012

Я хотел бы иметь возможность написать SQL-запрос, который изменяет базу данных, на которую я в данный момент вошел.

Пример:

$ psql my_db
psql(9.1.1)
my_db=> ALTER DATABASE my_db SET some_variable = '0';
                       ^^^^^

Есть ли способ избежать указания имени базы данных в этом запросе?

Ответы [ 2 ]

18 голосов
/ 17 февраля 2012

Не могу проверить это прямо сейчас, но, поскольку вы находитесь на 9.1, вы можете попробовать:

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

Возможно, вам нужно выбрать current_database () в переменную, чтобы она работала.

8 голосов
/ 17 февраля 2012

Если вы выполняете скрипт в psql, вы можете использовать механизм подстановки psql:

alter database :DBNAME SET ...

Документация здесь: http://www.postgresql.org/docs/current/interactive/app-psql.html#APP-PSQL-VARIABLES

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...