我想改進PostgreSQL中的觸發器在特定用戶進行修改時被禁用的方式。優化觸發器,排除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();
你看到改進的餘地嗎?我想在update_flag()
的調用之前在CREATE TRIGGER
部分嵌入條件,但我無法找到如何。它會有所作爲嗎?
您的PostgreSQL版本? –
當你在current_user ='app''時,你是否嘗試過每一行? (自9.0起可用) –
@IgorRomanchenko我正在使用PostgreSQL 8.4.8 –