防止删除一个用户的 table 记录并允许在 postgresql 中删除另一个用户

Prevent deletion of table records for one user and allow deletion for another in postgresql

我有一个要求,我必须禁止删除除一个用户(即 user1)之外的所有用户的 table 记录。因此,为此我使用了如下触发器。

CREATE OR REPLACE FUNCTION prevent_deletion() RETURNS trigger AS $$
declare
cur_user varchar(30);
BEGIN
Select current_user into cur_user;
IF cur_user != 'user1' THEN
RAISE EXCEPTION 'You cannot delete records from this table!';
END IF;  
RETURN NEW;
END;
$$ LANGUAGE plpgsql;

触发器阻止删除除 user1 以外的用户的 table 记录,这很好,但对用户 user1 不起作用。我的意思是它不会删除用户 1 的 table 记录。

我的代码哪里错了?
提前致谢。

删除前执行的触发器应该return old.

CREATE OR REPLACE FUNCTION prevent_deletion() 
RETURNS trigger AS $$
BEGIN
    IF current_user != 'user1' THEN
        RAISE EXCEPTION 'You cannot delete records from this table!';
    END IF;  
    RETURN OLD;
END;
$$ LANGUAGE plpgsql;