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

Postgresql: use variable in role name

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

每次连接时,我都会输入:

SET ROLE 'A-ro';

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

psql> :ro

我尝试了两件事:current_database() 和 :DBNAME。 问题:似乎我不能写这样的东西: 设置角色(选择 current_database() || '-ro');

我也不会写:

SET ROLE ':DBNAME-ro';

SET ROLE :DBNAME || '-ro';

我正在寻找正确的语法。

感谢@mdlx 的回答,我深入研究了 "intermediate variable" 方法。 这是我的工作 .psqlrc 提取物:

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

切换到 RO 模式有效:

psql> :ro
SET