12
보안에 민감한 디자인의 경우 특정 테이블에서 DELETEs
을 비활성화하고 싶습니다.PostgreSQL의 테이블에서 DELETE를 비활성화 하시겠습니까?
DELETE
은 단순히 행에 deleted
플래그를 설정해야합니다 (응용 프로그램 계층에서 사용되는보기에서 볼 수 있음).
내가 알고있는 것처럼 rule은 추가 쿼리를 생성하므로 규칙이 원래 쿼리를 억제 할 수 없습니다. 그림으로
트리거와 장난감 예 (아직 테스트하지) :
-- data in this table should be 'undeletable'
CREATE table article (
id serial,
content text not null,
deleted boolean default false
)
-- some view that would only show articles, that are NOT deleted
...
-- toy trigger (not tested)
CREATE OR REPLACE FUNCTION suppress_article_delete()
RETURNS TRIGGER AS $sad$
BEGIN
IF (TG_OP = 'DELETE') THEN
UPDATE article SELECT id, content, TRUE;
-- NEW or NULL??
RETURN NEW;
END IF;
RETURN NULL;
END;
$sad$ LANGUAGE plpgsql;
는 무엇 DELETE
을 억제하는 좋은 방법이 될 것입니다?
고마워요! 이 * undelete * 디자인을 데이터 모델로 가져오고 싶습니다. 관리 (취소)가 아닙니다. 그래서 나는'INSTEAD' 규칙을 시도 할 것입니다. – miku