오라클 트리거를 만들어 봤는데요, 그 이후에 테이블에 insert가 안되네요. 0 2 805

by 김쿠쿠 [2018.11.02 17:24:54]


CREATE OR REPLACE TRIGGER TABLE_A_TR
	AFTER 
	INSERT ON TABLE_B
	FOR EACH ROW
	DECLARE
BEGIN
	IF INSERTING
	THEN
        MERGE INTO TABLE_A A
        USING (SELECT :new.USER_ID as USER_ID, :new.SEQEUNCE_ID as SEQEUNCE_ID FROM DUAL) B
			ON (B.USER_ID = A.USER_ID)
        WHEN MATCHED THEN
			UPDATE SET A.SEQEUNCE_ID = B.SEQEUNCE_ID
        WHEN NOT MATCHED THEN
			INSERT (USER_ID, SEQEUNCE_ID)
			VALUES (B.USER_ID, B.SEQEUNCE_ID);
	END IF;  
	COMMIT;
END;
/

제가 트리거는 많이 안만들어봐서 경험이 부족합니다.

TABLE_B 에 insert 될때만, TABLE_A에 merge문으로 insert or update를 하는 trigger를 만들었는데요.

생성은 잘 되는데, trigger가 생성 된 후에, TABLE_B에 데이터가 insert되지가 않아요.... 물론 TABLE_A에 merge도 되지 않구요..

 

혹시 문제점이 뭔지 알 수 있을까요?

by 김쿠쿠 [2018.11.02 17:37:06]

맨밑에 commit; 을 뺴니까 동작을 잘 하네요.;; 맞게 쓰는건지 모르겠습니다만..


by 야신 [2018.11.02 19:00:00]

트리거에서는 commit 을 사용하면 안됩니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입