我有一个表,该表的ID_user_update列保留插入/更新行的用户的ID。我创建了一个触发器,用于测试此列是否为NULL并引发异常。但这仅适用于INSERT查询,因为在UPDATE查询中,如果未设置此列,则使用它的当前值。换句话说,如果未在查询中设置,则NEW.id_user_update等于OLD.id_user_update。
我发现的唯一解决方案是删除用户更新权限并强制他使用功能。但这不是这种情况下的选择。
有什么想法吗?
答案 0 :(得分:0)
您只需定义触发器ON INSERT OR UPDATE
:
CREATE FUNCTION mytrig() RETURNS trigger
LANGUAGE plpgsql AS
'BEGIN
NEW.id_user_update = get_current_user();
RETURN NEW;
END;';
CREATE TRIGGER mytrig BEFORE INSERT OR UPDATE ON atable
FOR EACH ROW EXECUTE PROCEDURE mytrig();
剩下的就是拥有一种功能或某种其他方式来获取当前用户的用户ID。