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
我有很多数据库: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