我正在尝试在我提供给psql
的SQL脚本中执行此操作:
ALTER DATABASE dbname SET SEARCH_PATH TO myschema,public
但我需要dbname
动态设置为当前数据库而不是硬编码。
这在PostgreSQL中是否可行?我尝试了这个,但它不起作用:
ALTER DATABASE (select current_database()) SET SEARCH_PATH TO myschema,public;
答案 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; $$;