在postgresql中将用户添加到数据库

Add user to database in postgresql

我目前正在尝试在将新的商业登记册插入商业登记册时将用户添加到数据库中 table。

CREATE OR REPLACE FUNCTION anade_usuario() RETURNS TRIGGER AS $$
DECLARE
nom TEXT;
BEGIN
    /* SELECT NEW.dni INTO nom;  */
    nom := NEW.dni;
    CREATE USER nom WITH PASSWORD 'pass';
    GRANT ALL PRIVILEGES ON DATABASE "fira" TO nom;
    RETURN NEW;
END;
$$ LANGUAGE 'plpgsql';


\echo Creating trigger number 3.
\echo --------------------------
CREATE TRIGGER trigger3 AFTER INSERT ON comercial
FOR EACH ROW EXECUTE PROCEDURE anade_usuario();

但脚本似乎添加了用户 'nom' 而不是 ID 为 NEW.dni 的用户,因此在第二次插入时我收到错误。我应该改变什么?

您需要将其作为动态命令执行:http://www.postgresql.org/docs/9.1/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

大致如下:

EXECUTE 'CREATE USER "' || nom || '" WITH ... '
INTO user
USING checked_user, checked_date;