postgresql触发更新时激活但插入失败

时间:2015-03-11 17:59:03

标签: postgresql triggers

我有一个Postgresql触发器,见下文。我的问题是当我添加一个新行并将官员角色设置为USER并且请求高优先级时我应该获得Not Authorized但我获得了授权。当我更新行时触发器触发并将单元格更改为“未授权”。是否有人理解这一点并能为我提供解决方案? :)为什么它不适用于插入和使用更新?

CREATE OR REPLACE FUNCTION priority_authorization() RETURNS trigger AS $BODY$
BEGIN
IF ((NEW.t_officer_role = 'USER') AND (NEW.priority_of_request = 'HIGH'))THEN
  NEW.t_priority_auth :='NOT AUTHORIZED';
ELSEIF NEW.t_officer_role = 'INVALID' THEN
NEW.t_priority_auth :='NOT AUTHORIZED';
ELSE
  NEW.t_priority_auth :='AUTHORIZED';
END IF;
RETURN NEW;
END; $BODY$ LANGUAGE plpgsql VOLATILE;

CREATE TRIGGER priority_authorization_trigger BEFORE INSERT OR UPDATE ON durs_centroid
FOR EACH ROW
EXECUTE PROCEDURE priority_authorization();

1 个答案:

答案 0 :(得分:0)

触发器和功能似乎没问题。必须有其他事情发生在你的问题上。像另一个触发器干扰或混淆表名...

通过在函数顶部添加它来进行调试:

RAISE NOTICE 't_officer_role: >>%<<, priority_of_request: >>%<<'
    , NEW.t_officer_role, NEW.priority_of_request;