오라클에서는 Foreign Key가 걸려 있을 경우,
ON UPDATE CASCADE 옵션이 실행되지 않기 때문에 컬럼값을 바꾸기가 쉽지 않습니다.
이때, 트리거를 만들어서 부모테이블이 업데이트 될 때, 자식테이블도 업데이트 되도록 하면 됩니다.
자식테이블 COMTCCMMNDETAILCODE 테이블의 CODE_ID가 현재 Foreign Key구요.
Foreign Key 제약 때문에 UPDATE가 진행되지 않습니다.
부모 : COMTCCMMNCODE.CODE_ID
자식 : COMTCCMMNDETAILCODE.CODE_ID
자식 : COMTCCMMNDETAILCODE.CODE_ID
아래와 같이 트리거를 하나 만들고 UPDATE문을 실행합니다.
CREATE OR REPLACE TRIGGER RENAME_TRIGGER
AFTER UPDATE ON COMTCCMMNCODE FOR EACH ROW
BEGIN
UPDATE COMTCCMMNDETAILCODE
SET CODE_ID = 'INTENTION'
WHERE CODE_ID = 'INTENT';
END;
자, 잘 실행이 될 겁니다.
아래 그림처럼 값이 잘 바뀌어 있습니다.
그리고, 1회용 트리거기 때문에 방금 생성한 트리거를 삭제합니다.
한가지 문제는,,, UPDATE 하는 값이 바뀔 때마다 트리거 값도 같이 바꿔줘야 한다는 거겠죠.
하지만, 임시방편으로 쓸만하다고 봅니다^^
'프로그래밍 언어 > 쿼리문 + Oracle + MySQL' 카테고리의 다른 글
[쿼리문/오라클] WHERE절에서 Null 값 비교하기 (0) | 2015.08.07 |
---|---|
[오라클] Oracle에서 ORA-28000: 계정이 잠금되었습니다. - 해결 방법 (0) | 2015.08.07 |
[오라클/쿼리문] Oracle에서 사용자가 생성한 모든 Table, View를 삭제하는 쿼리 만들기 (2) | 2015.06.04 |
[오라클/쿼리문] Oracle에서 세자리 콤마 찍기 (0) | 2015.03.25 |
[쿼리문] Merge into를 이용해서 insert나 update를 자동으로 실행하자. (0) | 2015.02.04 |
댓글