잠시만 기다려 주세요


 
HOME   |  여기는?   |  바다물때표   |  여러가지 팁 (804)  |  추천 및 재미 (75)  |  자료실 (17)  |  끄적거림 (467)  |  시나리오 (760)  |  드라마 대본 (248)  |  

2019년 10월 15일
항상 수신하고 단련해라. 사람은 조금만 여유가 생기면 언제 그랬냐는 듯 딴짓을 한다. - 바다아이
 




    DATABASE

DATABASE - PostgreSQL의 트리거(TRIGGER)와 함수(function) 예제
이 름 : 바다아이   |   조회수 : 1116         짧은 주소 : https://www.bada-ie.com/su/?381531886961

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');

 
위의 데이터를 입력하면 로그는 10개 행만 테이블에 저장된다.
데이터를 추가하기 전에 트리거의 연결된 펑션이 실행되어
테이블의 행이 10개를 넘어가면 가장 옛날 데이터를 삭제한다.


출처 : http://wwwi.tistory.com/348
 
| |


      1 page / 3 page
번 호 카테고리 제 목 이름 조회수
72 DATABASE db .. dbeaver, db admin tool 바다아이 942
71 DATABASE postgresql SEQUENCE reset .... 바다아이 863
70 DATABASE mysql, mariadb , , , , left, substring, right, concat 바다아이 1223
69 DATABASE [PostgreSql] WITH , , Operator 바다아이 957
68 DATABASE postgresql for, foreach , 바다아이 1007
67 DATABASE postgresql , , into ... 바다아이 922
66 DATABASE postgresql PL/pgSQL - SQL Procedural Language, , 바다아이 3121
65 DATABASE postgresql ... .. 바다아이 1172
64 DATABASE postgresql CSV export/import 바다아이 1168
63 DATABASE postgresql tablespace , .... 바다아이 1384
62 DATABASE postgresql 10 partitioning, ... , ... 바다아이 1134
61 DATABASE Using PostgreSQL Arrays, ... ... 바다아이 1202
현재글 DATABASE PostgreSQL (TRIGGER) (function) 바다아이 1117
59 DATABASE mysql, mariadb DISTINCT GROUP BY 바다아이 1067
58 DATABASE Optimize and Improve PostgreSQL Performance with VACUUM, ANALYZE, and REINDEX 바다아이 1681
57 DATABASE postgresql tuple . vacuumdb .. , . 바다아이 1185
56 DATABASE RDBMS SQL MONGODB ... 바다아이 1078
55 DATABASE mysql 5.x my.cnf 바다아이 1283
54 DATABASE postgresql , .. 바다아이 1375
53 DATABASE postgresql , size, 바다아이 1774
52 DATABASE postgresql , , .... 바다아이 1194
51 DATABASE PostgreSQL Replication, , , master, slave 바다아이 1556
50 DATABASE postgresql case 바다아이 1271
49 DATABASE postgresql with 바다아이 1266
48 DATABASE postgresql , , string 바다아이 1470
47 DATABASE / SELECT , 바다아이 1348
46 DATABASE Postgresql partitioning table , , , 바다아이 1490
45 DATABASE PostgreSQL 바다아이 1548
44 DATABASE postgresql vacuumdb, psql, pg_dump password crontab 바다아이 1737
43 DATABASE postgresql sequence 퀀 auto_increment . 바다아이 2152
| |




Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ FreeBSD + GoLang + PostgreSQL ]
서버위치 : 서울 Amazon Lightsail  실행시간 : 0.02127
to webmaster... gogo sea. gogo sea.