Postgresql:在角色名称中使用变量

时间:2015-01-06 17:13:05

标签: postgresql roles psql

我有很多DB:A,B,C等 对于每个DB,我创建了一个只读访问角色:A-ro,B-ro,C-ro。

每次我连接时,都输入:

SET ROLE 'A-ro';

有些数据库名称可能会很长,每次都不是很酷;所以,我想在我的.psqlrc中创建一个别名,以便输入类似的内容:

psql> :ro

我尝试了两件事:current_database()和:DBNAME。 问题:似乎我不能写出类似的东西: SET ROLE(SELECT current_database()||' -ro');

我也写不出来:

SET ROLE ':DBNAME-ro';

SET ROLE :DBNAME || '-ro';

我正在寻找正确的语法。

1 个答案:

答案 0 :(得分:0)

感谢@mdlx回答,我挖掘了"中间变量"办法。 这是我的工作.psqlrc提取:

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

切换到RO模式正在运行:

psql> :ro
SET