Sql 使用参数以编程方式创建角色
我正在寻找一种方法来创建一个函数,该函数接受用户名和密码的两个参数,并使用它创建一个只读角色。我试过这样的方法:Sql 使用参数以编程方式创建角色,sql,postgresql,plpgsql,Sql,Postgresql,Plpgsql,我正在寻找一种方法来创建一个函数,该函数接受用户名和密码的两个参数,并使用它创建一个只读角色。我试过这样的方法: create or replace function create_user_readonly ( unm varchar, pwd varchar ) returns varchar(10) as $$ begin create role unm login password @pwd; return 'success'; end; $$ languag
create or replace function create_user_readonly (
unm varchar,
pwd varchar
)
returns varchar(10) as $$
begin
create role unm login password @pwd;
return 'success';
end;
$$ language plpgsql;
这将抛出错误:
[42601]错误:在“@”位置或附近出现语法错误:151
我曾想过使用动态SQL来构造查询,但在这里遇到了这个问题():
对参数符号的另一个限制是它们仅在
选择、插入、更新和删除命令。在其他语句类型中
(通常称为实用程序语句),必须以文本方式插入值
即使它们只是数据值
以下是一个例子:
create or replace function create_user_readonly (
unm varchar,
pwd varchar
)
returns varchar(10) as $$
begin
execute format($f$create role %I login password '%s'$f$,unm,pwd);
execute format('alter role %I set transaction_read_only to on',unm);
return 'success';
end;
$$ language plpgsql;
请记住,您将需要更改用户以将事务设置为只读
也设置为只读。
同时:
创建角色
RO默认为角色
改变角色
请记住,克服uset配置事务\u只读
就像运行一条语句一样简单
创建角色不会授予连接
权限,如果需要,请使用创建用户
。以下是一个示例:
create or replace function create_user_readonly (
unm varchar,
pwd varchar
)
returns varchar(10) as $$
begin
execute format($f$create role %I login password '%s'$f$,unm,pwd);
execute format('alter role %I set transaction_read_only to on',unm);
return 'success';
end;
$$ language plpgsql;
请记住,您将需要更改用户以将事务设置为只读
也设置为只读。
同时:
创建角色
RO默认为角色
改变角色
请记住,克服uset配置事务\u只读
就像运行一条语句一样简单
创建角色不会授予
CONNECT
权限,如果需要,请使用create USER
。谢谢,这完全奏效了!你的名字应该是Wow:)是不是事务\u只读
不能在与创建角色
相同的语句中完成?不是真的,至少我从未尝试过,也没有记录:)用你的便条更新并添加了几个我的,作为nota bened谢意mucho!我很感激你的帮助:)谢谢你,这完全奏效了!你的名字应该是Wow:)是不是事务\u只读
不能在与创建角色
相同的语句中完成?不是真的,至少我从未尝试过,也没有记录:)用你的便条更新并添加了几个我的,作为nota bened谢意mucho!我感谢您的邀请:)