일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 예제
- 파라미터
- 데이터베이스
- 초보
- Delphi
- dll
- MySQL
- 입문
- 설치
- 셋업
- 인스톨
- 문자열
- MFC
- Firebird
- WIN32 SDK
- 파이어버드
- PostgreSQL
- 기초
- xml
- c#
- VB.NET
- SDK
- winsock
- SQL
- Visual Basic
- 델파이
- 소니
- Visual Studio 2005
- vb
- 시리얼 통신
- Today
- Total
프로그래밍 노트
PostgreSQL의 트리거와 펑션 예제 본문
PostgreSQL의 트리거와 펑션 예제를 만들어 봤다.
자료를 찾는데 너무 힘들어서 나중에 잊기전에 정리해봤다.
● 우선 테스트용 테이블 작성
CREATE TABLE datalog(
logtime timestamp PRIMARY KEY,
data varchar,
content varchar
);
* 테이블 지우기
DROP TABLE datalog;
● 펑션(Function) 함수 예제
이 함수가 실행되면 지정 테이블의 레코드가 10개를 넘으면 가장 오래된 것부터 지운다.
CREATE FUNCTION data_fun() RETURNS trigger AS $data_fun$
DECLARE
rowcount integer;
delcount integer;
maxcount integer;
BEGIN
maxcount := 10;
SELECT count(*) logtime into rowcount FROM datalog;
delcount := rowcount - maxcount + 1;
IF delcount > 0 THEN
DELETE FROM datalog WHERE logtime IN (SELECT logtime FROM datalog ORDER BY logtime LIMIT delcount);
END IF;
RETURN NEW;
END;
$data_fun$ LANGUAGE plpgsql;
* 펑션 지우기
DROP FUNCTION data_fun();
● 트리거(Trigger) 함수 예제
지정 Table에서 추가나 변경이 이루어질 때 지정 펑션이 실행된다.
CREATE TRIGGER data_trg BEFORE INSERT OR UPDATE ON datalog
FOR EACH ROW EXECUTE PROCEDURE data_fun();
* 트리거 지우기
DROP TRIGGER data_trg ON datalog;
● 테스트용 데이터
insert into datalog(logtime, data) values('2015-01-01 12:12:01', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:12:02', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:12:03', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:12:04', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:12:05', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:12:06', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:12:07', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:12:08', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:12:09', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:13:01', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:13:02', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:13:03', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:13:04', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:13:05', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:13:06', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:13:07', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:13:08', 'aa');
insert into datalog(logtime, data) values('2015-01-01 12:13:09', 'aa');