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 48
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
3794 테이블 통계 정보 Cardinality 값의 의미를 알고 싶습니다. 1 secret baejooc 2014.04.05 10
3793 테이블 크기제한은 어떻게 해제하나요? 2 로닥 2012.09.10 5576
3792 테이블 코멘트 컬럼 코멘트 질문 1 file 대청댐 2023.08.03 74
3791 테이블 컬럼이름 대소문자 지원 1 akasima 2017.08.24 750
3790 테이블 컬럼에 comment 넣기.. 1 파란토끼 2013.10.09 22964
3789 테이블 컬럼에 COMMENT 추가는 어떻게 하나요? 1 파나순 2009.09.29 14096
3788 테이블 컬럼 구하는 쿼리좀....... 1 wewek3jk3 2019.08.20 1668
3787 테이블 조인 후, 또 정렬 후 결과값들을 게시판 페이징 처리할 때... 3 조상필 2009.10.01 18911
3786 테이블 정보를 가지고 오는 쿼리를 알고 싶습니다. 1 미스터비니 2011.01.04 9790
3785 테이블 저장공간 쿼리 질문드립니다. 3 os1414 2020.11.04 137
3784 테이블 우측마우스 메뉴 "데이터 올리기"를 명령어로 하는 방법은?? 1 풀소리 2011.08.09 8532
3783 테이블 용량 정보 확인 문의 3 bchlim 2021.02.22 876
3782 테이블 에서 데이터 타입인 set의 사이즈를 구하는 쿼리는 없을까요? 1 니르바나 2012.06.27 6529
3781 테이블 스크립트 얻는 방법이 필요합니다 1 ㅇㅇ 2013.06.25 10625
3780 테이블 수정 문의 1 유니콘 2010.06.10 8557
3779 테이블 설명 기능 설치 3 abg 2018.05.29 300
3778 테이블 생성이 안되네요..;; 1 미야프 2009.09.14 9731
3777 테이블 생성시 컬럼추가에 있는 컬럼종류에 대해 궁금합니다. 2 존케이 2011.10.22 8712
3776 테이블 생성시 에러 1 file ran 2013.02.08 5690
3775 테이블 생성시 reuse_oid 옵션 관련 문의 1 종이 2016.02.22 8844
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 ... 200 Next
/ 200

Contact Cubrid

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