4

我正在尝试在我输入的 SQL 脚本中执行此操作psql

ALTER DATABASE dbname SET SEARCH_PATH TO myschema,public

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

这在 PostgreSQL 中可能吗?我试过这个但它不起作用:

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

1 回答 1

6

您不能在无法对标识符进行参数化的普通 SQL 中执行这样的语句。
您可以编写一个plpgsql 函数来执行动态 SQL

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

DO $$
BEGIN
EXECUTE '
ALTER DATABASE ' || current_database() || ' SET SEARCH_PATH TO myschema,public';
END; $$;
于 2012-04-18T15:51:09.167 回答