我正在尝试在将新的商业注册表插入到商业表中时将用户添加到数据库中。
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的用户,因此在第二次插入时我收到错误。我应该改变什么?
答案 0 :(得分:1)
您需要将其作为动态命令执行: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;