如何在PostgreSQL中执行ALTER DATABASE $ current_database

时间:2012-04-18 15:27:07

标签: postgresql

我正在尝试在我提供给psql的SQL脚本中执行此操作:

ALTER DATABASE dbname SET SEARCH_PATH TO myschema,public

但我需要dbname动态设置为当前数据库而不是硬编码。

这在PostgreSQL中是否可行?我尝试了这个,但它不起作用:

ALTER DATABASE (select current_database()) SET SEARCH_PATH TO myschema,public;

1 个答案:

答案 0 :(得分:5)

您无法在纯SQL中执行此类语句,其中标识符无法进行参数化 你可以写一个plpgsql function to execute dynamic SQL

使用PostgreSQL 9.0 或更高版本,您还可以使用DO statement

DO $$
BEGIN
EXECUTE '
ALTER DATABASE ' || current_database() || ' SET SEARCH_PATH TO myschema,public';
END; $$;