如何使用数据(而不是标识符)来授予postgres权限

问题描述 投票:0回答:1

我想使用以下函数(作为表的插入的触发器):

CREATE OR REPLACE FUNCTION insert_authid_fn() RETURNS trigger AS $$
BEGIN
  GRANT ALL ON DATABASE testdb TO NEW.username;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

我收到错误:

ERROR:  syntax error at or near "."
LINE 3:   GRANT ALL ON DATABASE testdb TO NEW.username;

因为New.username是值,而不是标识符。

我怎样才能实现这个GRANT

sql postgresql plpgsql grant postgresql-9.6
1个回答
1
投票

语法:

CREATE OR REPLACE FUNCTION insert_authid_fn() RETURNS trigger AS $$
BEGIN
  execute format ('GRANT ALL ON DATABASE testdb TO %I',NEW.username);
  RETURN NEW;
END;
$$ LANGUAGE plpgsql;

但我怀疑这是一个好主意

© www.soinside.com 2019 - 2024. All rights reserved.