2015-01-06 42 views
0

我有許多DB:A,B,C等。 對於每個DB,我創建了只讀訪問角色:A-ro,B-ro,C-ro。Postgresql:在角色名稱中使用變量

每次我連接,I型:

SET ROLE 'A-ro'; 

有些DB的名稱可能會很長,這錄音是每次不是涼;所以,我想在我的.psqlrc創建別名,以鍵入類似:

psql> :ro 

我試過兩件事情:current_database()和:DBNAME。 問題:看起來我不能寫這樣的: SET ROLE(SELECT current_database()||'-ro');

而且我可以不寫,要麼:

SET ROLE ':DBNAME-ro'; 

SET ROLE :DBNAME || '-ro'; 

我正在尋找正確的語法。

+0

你可以使用['EXECUTE'](http://www.postgresql.org/docs/ 9.1 /靜態/ PLPGSQL-statements.html#PLPGSQL語句執行的-DYN)。缺點是你必須將其封裝到plpgsql函數中。 – ckruse

回答

0

感謝@mdlx的回答,我挖掘出「中間變量」的方式。 這是我的工作.psqlrc提取物:

\set ROLE_RO '''':DBNAME-ro'''' 
\set ro 'SET ROLE ':ROLE_RO; 

切換到RO模式工作:

psql> :ro 
SET 
相關問題