규칙을 쓰면 입력 받은 쿼리의 “쿼리 트리”를 재작성할 수 있다. 흔히 업데이트 가능한 뷰를 포한한 뷰를 시행하는 데 쓰인다. - 위키백과
이 강의의 목표: 데이터베이스에 대해 새 규칙을 생성하는 방법을 배우기.
사용자의 ‘people’ 테이블에서 ‘phone_no’의 모든 변경 사항을 ‘people_log’ 테이블에 로그 기록하고 싶다고 해봅시다. 그러면 새 테이블을 생성해야 합니다.
create table people_log (name text, time timestamp default NOW());
그 다음, ‘people’ 테이블에서 일어나는 ‘phone_no’의 모든 변경 사항을 ‘people_log’ 테이블에 로그 기록하는 규칙을 다음과 같이 생성하십시오.
create rule people_log as on update to people
where NEW.phone_no <> OLD.phone_no
do insert into people_log values (OLD.name);
이 규칙이 작동하는지 시험해보기 위해, 전화번호를 수정해보겠습니다.
update people set phone_no = '082 555 1234' where id = 2;
people 테이블이 정확히 업데이트됐는지 확인하십시오.
select * from people where id=2;
id | name | house_no | street_id | phone_no
----+------------+----------+-----------+--------------
2 | Joe Bloggs | 3 | 2 | 082 555 1234
(1 row)
이제 방금 생성한 규칙 덕분에 people_log 테이블이 다음과 같이 보일 것입니다.
select * from people_log;
name | time
------------+----------------------------
Joe Bloggs | 2014-01-11 14:15:11.953141
(1 row)
주석
time 필드의 값은 현재 날짜와 시간에 따라 달라집니다.
규칙을 사용하면 사용자 데이터베이스에 자동적으로 데이터베이스의 다른 부분에서 일어난 변경 사항을 반영하는 데이터를 추가하거나 변경하도록 할 수 있습니다.
다음 모듈에서 PostGIS를 사용한 공간 데이터베이스를 소개할 것입니다. 이번 모듈에서 배운 데이터베이스의 개념들을 GIS 데이터에 적용하는 단계입니다.