我正在尝试在我输入的 SQL 脚本中执行此操作psql
:
ALTER DATABASE dbname SET SEARCH_PATH TO myschema,public
但我需要dbname
动态设置为当前数据库而不是硬编码。
这在 PostgreSQL 中可能吗?我试过这个但它不起作用:
ALTER DATABASE (select current_database()) SET SEARCH_PATH TO myschema,public;
我正在尝试在我输入的 SQL 脚本中执行此操作psql
:
ALTER DATABASE dbname SET SEARCH_PATH TO myschema,public
但我需要dbname
动态设置为当前数据库而不是硬编码。
这在 PostgreSQL 中可能吗?我试过这个但它不起作用:
ALTER DATABASE (select current_database()) SET SEARCH_PATH TO myschema,public;
您不能在无法对标识符进行参数化的普通 SQL 中执行这样的语句。
您可以编写一个plpgsql 函数来执行动态 SQL。
使用 PostgreSQL 9.0或更高版本,您还可以使用DO
语句:
DO $$
BEGIN
EXECUTE '
ALTER DATABASE ' || current_database() || ' SET SEARCH_PATH TO myschema,public';
END; $$;