database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40423 게시물 읽기
No. 40423
오라클 트리거에 관해서 질문드려요
작성자
도토리(dododori)
작성일
2014-04-08 18:01
조회수
6,970

 안녕하세요 오라클 트리거에 관해서 질문드립니다.

현재 한테이블에 트리거가 인서트트리거, 업데이트트리거, 딜리트트리거 이렇게 걸려있어요

인서트나 딜리트는 상관없는데 업데이트에서 쓰잘떼기 없는 내용이 업데이트 되어도 히스토리쪽에 자꾸

트리거때문에 내용이 추가가 되서 문제가 되거든요.

그래서 테이블의 특정칼럼이 변경되지 않는 한 업데이트 트리거가 작동 안되도록 하고싶은데..

예를들면 USE 란 칼럼이 Y에서 N 으로 변경되지 않는 이상 NO칼럼이 아무리 1에서 2로 바껴도 트리거가 작동이 안되는거죠.

제가 토드를 사용하고 있는데 트리거를 열어보면 구문에 When Updating Columns 라고 있고

Fire the trigger when any column is updated 와 Fire the trigger only the specified columns are updated 이렇게 두개가 있는데

후자껄로 선택되어있어요 그래서 아래 테이블의 칼럼에서 USE란 칼럼만 선택을 해서

내용만 보면 USE란 컬럼이 선택되어있으니 그거만 업데이트 되었을때 트리거를 실행해라 라고 되어있거든요

그래서 업데이트문으로 다른 컬럼도 수정해보구 USE칼럼도 수정해봤는데 확실히 USE말고는 트리거가 실행이 안되더라구요.

근데 erp프로그램에서 이 테이블을 수정하는 부분이 있거든요 거기서 수정하면 다른 컬럼을 수정하든 USE칼럼을 하던 전부 트리거가 동작을 하네요

왜 그러는건지 모르겠네요.. 왜 DB상에서 데이터를 수정하면 트리거가 수행이 안되고 프로그램으로 수정하면 트리거가 수행이되는지..

만약에 이게 안되서 트리거 바디 부분을 수정해야한다면 어떻게 내용을 수정해야하는지,, :OLD.USE <> :NEW.USE 이렇게 if문으로 넣어야 되는건지..

사실은 구문에 원래 추가했었는데 안먹더라구요;; 능력자분들 답변 부탁드려요~

이 글에 대한 댓글이 총 2건 있습니다.

1. 업데이트 트리거를 탄 이유
  보통 어플리케이션에서 업데이트 할때는
  변경된 컬럼만 업데이트하지는 않죠.
  변경이 되었건 안되었건 모든 컬럼을 업데이트 하겠지요.


2. IF :NEW.use <> :OLD.use 조건이 안먹은 이유
  안될 이유는 없습니다. 뭔가 잘못하신듯


3. IF 문보다는 When 절을 사용하세요.
CREATE OR REPLACE TRIGGER tr_test
BEFORE UPDATE OF use_yn ON test
FOR EACH ROW
WHEN (OLD.use_yn != NEW.use_yn)
BEGIN
    -- 로직 --
END;
/

마농(manon94)님이 2014-04-09 00:10에 작성한 댓글입니다.
이 댓글은 2014-04-09 00:11에 마지막으로 수정되었습니다.

 감사합니다~ 

마농님 덕분에 또 하나 해결했네요~!! 정말 너무 감사드려요!

트리거에  WHEN 절이 있었네요 바디 안에 넣으면 자꾸 에러발생해서 컴파일이 안되었거든요

WHEN 절에 넣으니 잘작동하네요~!! 

좋은하루 보내세요!

도토리님이 2014-04-09 09:58에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40426오라클 셀렉트쿼리에 관해서 질문있어요 [2]
도토리
2014-04-09
7032
40425오라클 커서 질문입니다.
서호현
2014-04-09
6273
40424금액 배분 관련 입니다. [1]
태지666
2014-04-09
9251
40423오라클 트리거에 관해서 질문드려요 [2]
도토리
2014-04-08
6970
40421오라클 데이터베이스 대용량 데이터 처리 방식 문의
박래준
2014-04-04
7019
40420구간별 데이터를 일자별로 출력? [1]
sql초보자
2014-04-03
7034
40418XMLAGG 사용시 &amp;로 바뀌는 현상 [5]
XML
2014-04-01
11238
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다