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 41591 게시물 읽기
No. 41591
oracle trigger 질문입니다.
작성자
디비학도(a2151300)
작성일
2018-06-27 20:08
조회수
4,668

오라클 트리거 관련 질문입니다.

 

CREATE OR REPLACE TRIGGER TRIGGER1 

AFTER INSERT OR UPDATE OF BUFFER1 ON TESTTABLE

FOR EACH ROW 

WHEN (old.BUFFER1 ='N') 

BEGIN

  UPDATE TESTTABLE set BUFFER1='' where BUFFER1='N';

END;

 

TESTTABLE에 UPDATE 또는 INSERT 시 BUFFER값이 'N'일때 ' '값으로 바꿔서 UPDATE,INSERT 시키고 싶은데

트리거 컴파일시에는 에러가 없는데  INSERT 테스트시 

ORA-04091: table myora.tesettable is mutating, trigger/function may not see it

ORA-06512: at "myora.trigger1", line 3

ORA-04088: error during execution of trigger 'myora.trigger1'

에러가 발생합니다 ㅜㅜ

 

old new 개념도 읽어봐도 이해가 잘 안되어서 어려운 작업은 아닌거같은데 벌써 3일째 막혀있네요..

고수분들의 조언부탁드립니다.

 

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

Update 를 하면 트리거가 무한 반복되겠지요.
Update 를 또 하는게 아니라 살짝 값만 바꿔주면 됩니다.
After 가 아닌 Before 에서 값을 넣어주면 됩니다.


CREATE OR REPLACE TRIGGER trigger1
BEFORE INSERT OR UPDATE OF buffer1
ON testtable
FOR EACH ROW
WHEN (NEW.buffer1 = 'N')
BEGIN
    :NEW.buffer1 := '';
END;
/

마농(manon94)님이 2018-06-28 18:06에 작성한 댓글입니다.

 아 이런식으로 사용하는군요!
혼자만의 틀안에서 고민하고있었네요..

도움감사합니다.

디비학도(a2151300)님이 2018-06-29 13:17에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41594토드에서 엑셀형식으로 EXPORT DDL 가능할까요? [1]
질문
2018-07-09
4299
41593없는 범위의 숫자를 동적으로 만드는 쿼리가 있을까요? [1]
don't commit
2018-07-02
4492
41592같은 Query 가 다른 Execution plan 사용
Austin
2018-06-29
4210
41591oracle trigger 질문입니다. [2]
디비학도
2018-06-27
4668
41587commit 관련 질문입니다.
조동건
2018-06-25
4229
41586기본 데이터베이스(스키마)를 설정하는 SQL문이 있나요?
조동건
2018-06-25
4333
41585조인관련해서 질문 드립니다 ㅠ [2]
김영욱
2018-06-21
4413
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다