触发在PostgreSQL中创建用户

时间:2012-10-02 14:42:35

标签: postgresql triggers

好吧,在systemuser中插入用户之后,我想使用新用户的密码为PostgreSQL创建一个ROLE。但是当我尝试创建用户时,会出现此错误:

  

块引用   错误:“NEW”处或附近的语法错误   第24行:更新用户NEW.login加密密码NEW.password ...

CREATE OR REPLACE FUNCTION trg_insertuser() 
RETURNS TRIGGER AS $trg_insertuser$
DECLARE
BEGIN
    IF (TG_OP = 'DELETE') THEN
        DROP USER OLD.login;
    ELSIF (TG_OP = 'UPDATE') THEN
        ALTER USER OLD.login ENCRYPTED PASSWORD NEW.password;
    ELSIF (TG_OP = 'INSERT') THEN       
        CREATE USER NEW.login ENCRYPTED PASSWORD NEW.password CREATEDB IN GROUP group_user;
    END IF;
    RETURN NULL;
END;
$trg_insertuser$ LANGUAGE plpgsql;

发生了什么事?

1 个答案:

答案 0 :(得分:1)

使用execute

execute 'drop user ' || quote_ident(OLD.login);

等...