Background Image

FORUM

2018.05.15 21:23

트리거 질문입니다.

조회 수 738 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Window7 64bit
CUBRID Ver.
9.3.9
CUBRID TOOL Ver.
CUBRID Manager 10.1.0.0003
응용 환경(API)
java

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

CREATE TABLE site_menu_his(

menu_id numeric(10,0) NOT NULL,

user_id numeric(10,0) NOT NULL,

type character varying(10) NOT NULL,

use_yn character(1) NOT NULL,

ins_id character varying(10),

ins_dtm datetime,

upd_id character varying(10),

upd_dtm datetime,

PRIMARY KEY(menu_id ,user_id )

) ;


이렇게 테이블을 만들었고(예시입니다.)

insert 와 update가 실행이 될때마다 트리거를 이용하여 

insert시에 ins_id, ins_dtm에 업데이트

update시에 upd_id, upd_dtm에 업데이트 되는 트리거를 만들려고 합니다.


insert 트리거

CREATE TRIGGER  tr_ins_site_menu_his

AFTER INSERT ON site_menu_his

EXECUTE 

UPDATE site_menu_his 

SET ins_id ='id', ins_dtm= SYSDATETIME

WHERE menu_id = obj.menu_id

AND user_id = obj.user_id;

이렇게 생성하였고 테스트 해보니 잘됩니다.  

하지만  

update 트리거의 경우에는 재귀호출로 무한루프가 되어 에러 메시지가 출력됩니다.

update 트리거 사용시 upd_id, upd_dtm값을 update 할 수 있는 방법 부탁드립니다.


한가지 찾아낸 방법으로는 

CREATE TRIGGER tr_upd_site_menu_his1

AFTER update ON site_menu_his(use_yn)

EXECUTE 

UPDATE site_menu_his SET upd_id ='id', upd_dtm= SYSDATETIME

WHERE menu_id = obj.menu_id

AND menu_id = obj.user_id;


CREATE TRIGGER tr_upd_site_menu_his2

AFTER update ON site_menu_his(type)

EXECUTE 

UPDATE site_menu_his SET upd_id ='id', upd_dtm= SYSDATETIME

WHERE menu_id = obj.menu_id

AND menu_id = obj.user_id;


빨간색 부분 처럼 수정될 컬럼을 지정해주면 되던데 컬럼을 하나씩 밖에 지정이 되지 않아 트리거가 컬럼이 많을경우 트리거를 많이 생성해야 됩니다.

혹시 이 방법말고 더 좋은 방법이 있다면 답변 부탁드립니다.

감사합니다.

  • ?
    오명환 2018.05.16 09:41
    트리거에 if 문을 사용해서 모니터링할 column의 old값과 new값을 비교하면 하나의 update trigger로 가능할 것 같습니다.

    CREATE TRIGGER tr_upd_site_menu_his1
    AFTER update ON site_menu_his
    IF old.use_yn <> new.use_yn or old.type <> new.type
    EXECUTE
  • ?
    퓨전남 2018.05.17 16:58
    답변이 도움이 되었습니다. 감사합니다.
  • ?
    엄기호 2018.05.16 09:43
    온라인 메뉴얼 URL 입니다.
    https://www.cubrid.org/manual/ko/9.3.0/sql/trigger.html#create-trigger

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 71
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4466
3899 CUBRID 매니저 에서 데이터베이스 접속시 시간 지연과 오류 1 secret ni Chang 2014.12.29 10
3898 자바 함수 문제 현상 1 secret 배운다큐브 2014.06.11 10
3897 큐브리드 버전 정보 3 secret 소금인형 2014.05.21 10
3896 테이블 통계 정보 Cardinality 값의 의미를 알고 싶습니다. 1 secret baejooc 2014.04.05 10
3895 sql_log 관련 3 secret 소금인형 2013.06.18 10
3894 프로시저 resultset 문의 secret 신데렐라 2013.05.23 10
3893 리눅스 큐브리드 제거 2 secret 쪼로롱 2013.05.14 10
3892 clob 입력에 대한 문의 2 secret 최범규 2017.04.13 10
3891 sql 조회 에러문의 2 secret 최범규 2017.03.22 10
3890 Table doesn't exist 에러.. 3 secret 가라가라 2016.12.05 10
3889 호스트 연결 에러 3 secret PJEPJE 2016.01.28 10
3888 Cubrid 2008과 7.3의 차이? 1 secret dennis 2009.08.04 10
3887 볼륨 생성 오류 4 secret 김수민 2015.06.29 10
3886 큐브리드 설정 관련 질문드립니다. secret 안산혀눙이 2017.08.08 10
3885 브로커 에러에 관하여 1 secret daltago87 2011.01.27 11
3884 리눅스에서 환경 설정 문의 9 secret 스마트 2010.12.30 11
3883 안녕하세요 네이버 에코스퀘어 관련 질문드립니다. 1 secret 강태구 2010.08.24 11
3882 오라클과의 성능에 대한 비교를 알고 싶습니다. 1 secret 오004 2009.12.16 11
3881 서버 JVM path 관련 문의 2 secret 아코 2015.06.06 11
3880 오류 관련 문의 드립니다. 1 secret 아코 2015.05.28 11
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales