我想改进当特定用户进行修改时禁用 PostgreSQL 中的触发器的方式。
例如:触发器应该忽略“应用”用户所做的更改,并从任何其他用户的每次修改开始。
我目前正在使用以下代码:
IF (CURRENT_USER = 'app') THEN
RETURN NULL;
END IF;
如:
CREATE OR REPLACE FUNCTION update_flag() RETURNS trigger AS $BODY$
BEGIN
IF (CURRENT_USER = 'app') THEN
RETURN NULL;
END IF;
IF (TG_OP = 'INSERT') THEN
...
ELSIF (TG_OP = 'UPDATE') THEN
...
ELSIF (TG_OP = 'DELETE') THEN
...
END IF;
RETURN NULL;
END;$BODY$
LANGUAGE plpgsql;
CREATE TRIGGER trigger_categories AFTER INSERT OR UPDATE OR DELETE
ON "categories"
FOR EACH ROW
EXECUTE PROCEDURE update_flag();
您认为这里有改进的空间吗?CREATE TRIGGER
我想在调用之前将条件嵌入到零件中update_flag()
,但我不知道如何。会有什么不同吗?