2012-04-18 37 views
3

我試圖做到這一點的SQL腳本,我送入psql執行ALTER DATABASE $ current_database:我怎樣才能在PostgreSQL的

ALTER DATABASE dbname SET SEARCH_PATH TO myschema,public 

,但我需要dbname動態地設置爲當前數據庫,而比硬編碼。

這在PostgreSQL中可能嗎?我試過,但它不工作:

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

你能否擊/的Perl/Ruby的/你最喜歡的腳本語言創建一個圍繞這個SQL腳本的包裝? – Brandan 2012-04-18 15:30:28

+0

這是我的後備。 – dan 2012-04-18 15:30:59

回答

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; $$;