한 사용자, 즉 user1을 제외한 모든 사용자에 대해 테이블 레코드 삭제를 비활성화해야한다는 요구 사항이 있습니다. 그래서 나는 다음과 같은 트리거를 사용했습니다.한 사용자의 테이블 레코드 삭제를 방지하고 postgresql의 다른 테이블 레코드 삭제 허용
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 이외의 사용자에 대한 테이블 레코드를 삭제하지 못하도록합니다. 괜찮 았지만 사용자 user1에게는 작동하지 않습니다. user1에 대한 테이블 레코드를 삭제하지 않는다는 의미입니다.
어디에서 코드가 잘못 되었습니까?
미리 감사드립니다.
postgres 버전이란 무엇입니까? –
https://www.postgresql.org/docs/9.5/static/sql-createpolicy.html 행 수준 보안 감시 –
@VaoTsun 9.5 – Suniel