postgre SQL 의 트리거 (인 스 턴 스 응용, 업데이트 전의 차동 데 이 터 를 어떻게 백업 합 니까?)
user 표 에 대해 첨삭 검 사 를 하거나 그 중 한 필드 에 변화 가 생 겼 을 때 해당 하 는 diffuser_list 표 에 필드 를 삽입 합 니 다.
다음 코드 의 역할 은 user 표 의 필드 '이름' 이 업 데 이 트 될 때 오래된 기록 을 diff 에 저장 하 는 것 입 니 다.user_list 표 중
이 유추 에 따 르 면 데 이 터 를 삽입 하여 데 이 터 를 삭제 할 때 이전 데 이 터 를 백업 하 는 코드 도 쓸 수 있다.
create or replace function make_diff_user_list()
returns trigger as
$body$
declare
curtime timestamp;
begin
curtime := `now`;
IF(TG_OP = 'UPDARE' ) THEN
IF (OLD.user_name != NEW.user_name ) THEN
INSERT INTO diff_user_list (user_id, user_name, update_time, operate_flg)
VALUES ( OLD.user_id, OLD.user_name, curtime, `1` );
RETURN NULL;
END IF;
END IF;
RETURN NULL;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
end;
$body$
language 'plpgsql' volatile
cost 100;
설명 하 다.
위의 이 코드 는 저장 과정 (procedure) 입 니 다.
그 중 $body $ 이 안 에는 body 가 아 닐 수도 있 고, 다른 것 일 수도 있다. diff_user_list
아래 코드 는 트리거 를 만 들 고 위의 저장 과정 과 연결 되 어 있 습 니 다.
create trigger diff_user_list
after insert or update or delete ON user
for each row execute procedure make_diff_user_list();
주의:
===============================================
하면, 만약, 만약...
language "plpgsql" dose not exist
다음 문장 을 실행 합 니 다.
create language plpgsql
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.